漏洞作者: agnes0621
PHPMyWind设计缺陷绕过过滤SQL注入
详细说明:
我会在标题里面告诉你们其实是全局变量覆盖吗?需要register_globals=on。 /include/common.inc.php 注册变量的代码:
foreach(array('_GET','_POST') as $_request) { foreach($$_request as $_k => $_v) { if(strlen($_k)>0 && preg_match('#^(GLOBALS|_GET|_POST|_SESSION|_COOKIE)#',$_k)) { exit('不允许请求的变量名!'); } ${$_k} = _RunMagicQuotes($_v); } }
看到这里,懂的人就懂了。代码中匹配了GLOBALS来禁止提交全局变量GLOBALS防止变量覆盖,但是只对$_GET和$_POST进行了检查,因此只要在$_COOKIE中提交即可绕过RunMagicQuotes。
漏洞证明:
注入点可能有很多,举一个例子吧:phpmywind/product.php
这里我们添加一个cookie名字叫GLOBALS[keyword] 打印一下$keyword:
绕过了过滤,引入了' payload:
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论