首先查看下一版本的更新内容
例如:我使用的版本是5.0.15,那么我就要查看5.0.16
查看后我们得知新版本进行了一个安全更新,所以是存在漏洞的,接下来我们就要根据版本更新后的补丁确定漏洞的位置。
查看版本更新后提交的信息,发现其修改的 Builder.php 文件代码比较可疑。
查询结果都是使用了拼接的方法,所以可能是在此处出现了问题。
接着我们注入一下报错函数
注入成功,出现报错注入
接下来我们要查看函数哪个地方出现问题
下断点进入insert
进入Db insert方法中
因为要先进行数据库的连接,在进入到insert中,所以我们退出来就能进入到insert方法中
但我们要看的是Builder,所以我们进入Builder中的insert
因为是parseData在处理数据,所以我们要进入parseData中
向下查看内容找到先前的补丁内容发现缺少内容,确定漏洞在此。
查看完全后退出insert
最终注入的就是我们看到直接将用户数据进行拼接,然后再回到 Builder 类的 insert 方法,直接通过替换字符串的方式,将 $data 填充到 SQL 语句中,进而执行,造成 SQL注入漏洞 。