tp框架配置错误产生的注入

背景

本周遇到一个注入,按照之前审计的结果,where([‘id’,’=’,$id])。当id可控时,应当不存在注入,那既然产生了注入,肯定进入了我之前没有进入的流程

影响ThinkPHP全版本的性能分析产生的注入

条件

  • sql_explain’ => true

  • 应该还是有一些的

注入成因

在执行完PDO的参数绑定的查询的语句后,进入性能分析流程

在这里插入图片描述

此时返回的sql是原始未经处理的sql

接下来进入getExplain方法进行分析

在这里插入图片描述

EXPLAIN语句和普通语句有一定差异

我也说不大清楚,需要一点点测试,这里研究可注入的方式

  • 报错注入,当然存在报错的时候是可以用的
  • 报错盲注
    • 在前面的PDO中,由于参数绑定问题,应返回一个正常页面
    • 此时如果性能分析也返回一个正常页面,则无法判断,所以只要性能分析语句通过构造报错即可
    • 少不了的条件语句,经过测试,if和case均可

payload

1
2
(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))
(Select (if((Length((Select id From wzl_action_log limit 1,1)))=5,(SELECT 6450 UNION SELECT 9483),0)))

条件

  • test字段应不允许为空,方可注入

在以后的代码审计中可以看看是否开启性能分析,开了的话,这个tp框架基本都是存在注入的。