漏洞发现
此系统通过全局过滤的方式对输入的 <、>、'、" 、空格等特殊符号进行处理,不可使用双引号进行注入那就意味着字符型注入是不可行的,需要找数值型
此处通过check_auth2函数来判断当前系统是否购买了微信小程序功能,如果购买继续向下执行,将$_REQUEST["M_id"]赋值给变量$M_id然后继续向下执行switch语句。
switch语句通过判断action的值来进行操作,此处action的值是通过REQUEST方式传递的。
将action的值通过GET方式赋值为editpwd时会将$M_id作为参数带入check函数执行。
此处将$M_id的值直接带入sql语句,并没有进行过滤,从而导致sql注入漏洞的产生。
尽管此系统已经通过对GET方式和POST方式输入的 <、>、'、" 、空格等特殊符号进行全局的过滤处理,但是仍然可以用其他的特殊符号进行绕过,并通过sql注入中的延迟注入来获取数据库中的内容。
构造绕过后的sql入语句为
M_id=6%0Aand%0Aif((length(database()))!=1,sleep(5),0)
拼接到M_id的后面并使用工具burpsuite对数据包进行抓取重放
因为特殊过滤的原因,自己写绕过后的脚本去跑库名
原文始发于微信公众号(深白网安):记一次某CMS的PHP代码审计简单SQL注入
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论