- A+
post提交的内容为:
POST /xxx/admin/login/login_check.php?langset=cn HTTP/1.1
Accept: text/html, application/xhtml+xml, */*
Referer: http://www.phptest.com/xxx/admin/login/login.php
Accept-Language: zh-CN
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip, deflate
Proxy-Connection: Keep-Alive
Content-Length: 108
DNT: 1
Host: www.phptest.com
Pragma: no-cache
Cookie: ts_email=141%40qq.com; ts_autologin=17xy55gq4wpws48g8o4wk84cg8s8cgk; CNZZDATA1670348=cnzz_eid%3D919512166-1402449882-%26ntime%3D1402537211%26cnzz_a%3D1%26ltime%3D1402537222272%26rtime%3D1; recordurl=%2Chttp%253A%252F%252Fwww.phptest.com%252Fxxx%252F%2Chttp%253A%252F%252Fwww.phptest.com%252Fxxx%252F
action=login&loginlang=login.php%3Flangset%3Dcn&login_name=admin&login_pass=123456&Submit=%E7%99%BB%E5%BD%95
login_check.php文件
接受参数的地方
foreach(array('_COOKIE','_POST','_GET') as $_request) {
foreach($$_request as $_key => $_value) {
$_key{0} != '_' && $$_key = daddslashes($_value,0,0,1);
}
}
接下来就是通过接收的参数查询数据库。牛牛看看发挥发挥login_check.php 这样接收参数是不是有可乘之机……
1#神在堕落 | 2014-06-12 11:53
我来消灭个零回复.思路不错.服务器不会这么傻的接受这样POST的
2#loopx9 | 2014-06-12 12:02
试试提交GLOBALS看能不能覆盖变量
3#hkAssassin | 2014-06-12 12:08
@神在堕落 我可以说这是审计的别人的代码么……觉得这地方可能会出问题所以拿出来讨论下!
4#hkAssassin | 2014-06-12 12:10
@loopx9 求详情。我测试不成功。变量不能覆盖……
5#寂寞的瘦子 | 2014-06-12 12:59
@hkAssassin 代码逻辑没问题。
6#小森森 | 2014-06-12 13:11
@hkAssassin get或post中加上一个&GLOBAL[xxx]=a 有用否……,这样按理说全局的$xxx应该为字符串a了
7#Mody | 2014-06-12 13:11
是metinfo的吧,而且前台和后台的daddslashes不一样的,后台有点问题的,前台好难呀,xfkxfk大牛发了几篇metinfo的SQL注入,关注中,膜拜阿
最后,悄悄的告诉你,$met_webkeys可以覆盖的。。。
8#hkAssassin | 2014-06-12 13:28
@Mody daddslashes 是一样的。人家重新写了,传的参数不一样,然后起的作用就不一样。反正这个代码比较变态,不遵循mvc啊!看累了都!!
9#hkAssassin | 2014-06-12 13:29
@寂寞的瘦子 是的逻辑没问题……
10#索马里的海贼 | 2014-06-12 13:33
@小森森 不是的哦亲 提交x.php?foo=GLOBALS[a]=b 然后用那段代码覆盖掉$GLOBALS的话 $GLOBALS就不再是超全局变量了 $a不会被改成b var_dump($GLOBALS)你会看到只有一个数组array('a'=>'b');
11#索马里的海贼 | 2014-06-12 13:34
写错了 x.php?GLOBALS[a]=b 无视那个foo
12#loopx9 | 2014-06-12 16:58
的确提交GLOBALS[xxx]会直接把整个GLOBALS数组覆盖掉,只留一个$xxx。所以要利用的话机会很小。除非提交全部代码所需的变量,但object之类的变量没法通过这种方式提交。
- 我的微信
- 这是我的微信扫一扫
- 我的微信公众号
- 我的微信公众号扫一扫