PHP审计:SQL注入类
漏洞本质:特定函数+可控变量
本章内容:基于SQL注入的代码审计

一.数据库监控

eg.1:QQ业务源码系统-(无过滤)

1.数据库SQL监控排查可利用语句定向分析
image

2.刷新页面seay数据库监控得到可能存在的变量127.0.0.1
image

3.找到代码中对应执行的sql语句
image

4.定位函数ywdd发现XFF头注入
这里可以改变XFF在数据库监控验证变量是否可控
image

5.构造payload插入数据包:
X-Forwarded-for: 127.0.0.1′ and 1=2 union select 1,user(),3,4,5#
image

二.正则匹配

常用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
image

1.定位对应文件以及参数:
image

2.跟踪定位SQL语句:
image

3.查看过滤为addslashes,可通过urldecode两次编码绕过:
image

4.构造payload:
http://localhost/lmxcms1.4/?m=tags&name=a’ and updatexml(0%2Cconcat(0x7e%2Cuser())%2C1)%23
image

5.使用Beyond Compare 4对比1.4与1.41文件代码不同,发现更新版本过滤情况:更新为先过滤,再解码从而规避注入。
image

版权声明:本文为letthink原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/letthink/p/16398446.html