变量覆盖:
\> $a = 1;
$b = 2;
$a = 3;
echo $a; => 输出3 .代码从上而下执行,$a被多次定义
常见变量覆盖导致漏洞的函数
\> 经常导致变量覆盖漏洞场景有:
$$使用不当
EXTRACT()函数使用不当
PARSE_STR()函数使用不当IMPORT_REQUEST_VARIABLES()使用不当
开启了全局变量注册等。
变量覆盖的危害
变量覆盖的漏洞危害基本是白盒审计,课堂上老师讲的Session覆盖有点特殊
还是先一步步复盘靶场整个步骤吧
第一步:
你手上有一套CMS,现在你对他就行白盒测试,你在Seay里面添加了一个规则
这里要说明一点:
这里默认大家这些函数都理解,这里就不做记录
第二步:
我们先不管什么SESSION,还有什么Cookie,我们先找到这个CMS的可以利用的变量覆盖的地方
知道了地方,但是这个路径在界面上显示是空的,所以我们去找调用了common.php的文件
搜索漏洞文件路径:”../duomiphp/common.php”
因为只有漏洞文件被调用了,才可以执行漏洞,我们看到这里开启了session_start();
说明我们可以自己建造session,上面的图片也说了,cookie他本身没有权限,只是因为绑定了有权限的ESSION所有他才有权限
看到cookie,那么肯定就是绕过登录界面
最后几步,回顾漏洞文件的条件,任何GET,POST,COOKIE,的传参他都会当作变量去执行
我们先去获取sesession,sesession的值,任何网站都是通用的
找到后台登录界面
进入后端代码构造查看SEEION:die(var_dump($_SESSION));
接下来:
我们进入开启了session_start();的目录,因为它下一个语句就调用了:require_once(“../duomiphp/common.php”);,所以我们进入这个界面
最后一步:构造paylod
我们说了,$$变量覆盖,GET,POST,cookie都可以传参
这里对于SESSION的排序,建议观看视频,定位1:51
GET传参:
\> http://blfg95a.zs.aqlab.cn/interface/comment.php?_SESSION[duomi_ckstr]=iwju&_SESSION[duomi_ckstr_last]=&_SESSION[duomi_admin_id]=1&_SESSION[duomi_group_id]=1&_SESSION[duomi_admin_name]=admin