ThinkPHP历史漏洞分析
老洞分析,本文章将会对 ThinkPHP 中出现过的多个漏洞进行分析,提高自己的 PHP 代码审计能力
ThinkPHP5 SQL注入1
影响版本:5.0.13<=ThinkPHP<=5.0.15
、5.1.0<=ThinkPHP<=5.1.5
,根据官方的安全更新,进行 Compare

查询 Commit 记录,发现 Builder.php 的更新比较可疑,打开 PHPStorm 配置好 xdebug,在 119 和 122 出下断点进行调试

根据代码执行流程,需要传入一个不为空的数组,当传入数组的第一位为inc
时,执行断点 119 的语句,那么就构造一个username/a
传入username[0]=inc
成功触发断点

将剩下的请求补充完整,传入?username[0]=inc&username[1]=hello&username[2]=world

也就是说,username[1]
会成功传入到 $sql
变量中,被execute
函数执行。传入一个报错注入语句,则被解析执行如图:

开启 Debug 情况下将会输出 MySQL 执行后的结果
