首页 » SEO优化 » phpextract_get技巧_CTF演习之变量覆盖

phpextract_get技巧_CTF演习之变量覆盖

访客 2024-10-23 0

扫一扫用手机浏览

文章目录 [+]

述:变量覆盖常日是利用外来参数更换初始化程序中原有变量的值。

一、extract函数利用不当

phpextract_get技巧_CTF演习之变量覆盖

考虑如下代码:<?php$auth = false;extract($_GET);if($auth){echo "flag{....}";}else{echo "Access Denied.";}?>

此处的extract函数将GET传入的数据转换为变量名和变量的值,以是布局如下payload 即可将 $auth 的值变为true并得到flag:

phpextract_get技巧_CTF演习之变量覆盖
(图片来自网络侵删)

?auth=1

二、parse_str 函数

考虑如下代码:<?php$auth = false;parse_str($_SERVER['QUERY_STRING']);if($auth){echo "flag{...}";}else{echo "Access Denied.";}?>

此处的parse_str函数同样也是将GET传入的字符串解析为变量,以是payload同上

三、import_request_variables函数 # 测试环境 5.4>php>=4.1

考虑如下代码:<?php$auth = false;import_request_variables('G');if ($auth){echo "flag{...}";}else{echo "Access Denied.";}?>

此处,import_request_variables函数的值由 G、P、C 三个字母组合而成,G代表GET,P代表POST,C代表Cookies。

注:参数GP,排在前面的字符会覆盖后面的字符传入的值。
此时GET和POST同上传入auth参数,则POST传入的auth会被忽略。

四、register_globals=ON 配置不当, PHP版本须要小于5.4

<?phpif($auth){echo "flag{...}";}else{echo "Access Denied.";}?>

利用register_globals的特性,用户传入参数auth=1 即可进入if语句块

注:如果 if 前初始化 $auth 变量,则不会触发这个漏洞。

五、代码逻辑漏洞

<?php$foo = "hello"; //赋值普通变量$$foo = "world"; //利用foo变量的值作为可变变量的变量名echo "$foo ${$foo}"; //输出:hello worldecho "$foo $hello"; //等同上面语句?>

利用 foreach 遍历数组(如,$_GET、$_POST 等)来注册变量,这样也会存在变量覆盖漏洞的情形。

<?php$auth = false;foreach($_GET as $key => $value){$$key = $value;}if ($auth){echo "flag{...}";} else {echo "Access Denied.";}?>

此时的 foreach 循环就将 GET传入的参数注册为变量,传入 ”?auth=1“ 即可绕过判断

标签:

相关文章

我国土地利用分类代码的构建与应用

土地利用分类代码是我国土地管理的重要组成部分,是土地资源调查、规划、利用和保护的依据。土地利用分类代码的构建与应用显得尤为重要。本...

SEO优化 2025-02-18 阅读1 评论0

微信跳转微信支付便捷支付体验的秘密武器

移动支付已成为人们日常生活中不可或缺的一部分。作为我国领先的社交平台,微信支付凭借其便捷、安全的支付方式,深受广大用户的喜爱。而微...

SEO优化 2025-02-18 阅读1 评论0

探寻会计科目代码背后的奥秘分类与

会计科目代码是会计信息系统中不可或缺的组成部分,它将企业的经济活动进行分类和归纳,为会计核算、财务分析和决策提供重要依据。本文将从...

SEO优化 2025-02-18 阅读1 评论0