变量覆盖漏洞

原理
变量覆盖指的是可以用我们的传参值替换程序原有的变量值

常出现位置

经常导致变量覆盖漏洞场景有:$$使用不当,extract()函数使用不当,parse_str()函数使用不当,开启了全局变量注册等。

函数解析
经常引发变量覆盖漏洞的函数有:extract() parse_str()

extract()函数(作用:将数组中将变量导入到当前的符号表)

列题:

$test =******;

extract($_GET);

if(isset($gift)){ $content = trim($test);

if($gift == $content){echo 'flag is:'.$flag;} else{ echo error}}

分析源码我们可以知道,

1、文件将get方法传输进来的值通过extrace()函数处理。

2、通过两个if语句分别判断是否存在gift变量,和变量gift的值和变量content的值是否相等。变量content的值是通过读取变量test的值获取到的。如果两个变量相等输出flag。如果不相等,输出错误。

似乎逻辑上没啥问题,但是如果我们传参了test呢?

第一开始test在php中已经定义了,但是因为extrace()函数,我传参test时相当于重新给test赋值对不对?因为php执行语句是自上而下,那我传的参数完全可以覆盖掉之前所定义的

那么当我传参gift=a&test=a,相当于$gift=a;$test=a 那么这里是不是就直接输出flag了呢 (因为$content是由$test决定,$gift和$test都是我可以决定的)


__EOF__

本文作者Crushz
本文链接https://www.cnblogs.com/Crushz-2024/p/18390458.html
关于博主:Crushz
版权声明:转载请注明来源哟~ QAQ
声援博主:UP UP UP !!!
posted @   Crushz  阅读(20)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
点击右上角即可分享
微信分享提示