tp框架配置错误产生的注入
背景
本周遇到一个注入,按照之前审计的结果,where([‘id’,’=’,$id])。当id可控时,应当不存在注入,那既然产生了注入,肯定进入了我之前没有进入的流程
影响ThinkPHP全版本的性能分析产生的注入
条件
sql_explain’ => true
应该还是有一些的
注入成因
在执行完PDO的参数绑定的查询的语句后,进入性能分析流程
此时返回的sql是原始未经处理的sql
接下来进入getExplain方法进行分析
EXPLAIN语句和普通语句有一定差异
我也说不大清楚,需要一点点测试,这里研究可注入的方式
- 报错注入,当然存在报错的时候是可以用的
- 报错盲注
- 在前面的PDO中,由于参数绑定问题,应返回一个正常页面
- 此时如果性能分析也返回一个正常页面,则无法判断,所以只要性能分析语句通过构造报错即可
- 少不了的条件语句,经过测试,if和case均可
payload
1 | (SELECT%20(CASE%20WHEN%20(Length((Select%20id%20from%20wzl_action_log%20limit%200,1))=5)%20THEN%20132%20ELSE%20(SELECT%206450%20UNION%20SELECT%209483)%20END)) |
条件
- test字段应不允许为空,方可注入
在以后的代码审计中可以看看是否开启性能分析,开了的话,这个tp框架基本都是存在注入的。