ThinkPHP3.2.3 where注入

Posted 李白你好

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ThinkPHP3.2.3 where注入相关的知识,希望对你有一定的参考价值。



在 D:\\phpstudy_pro\\WWW\\thinkphp3\\Application\\Home\\Controller下的IndexController.class.php添加代码

先用正常id去走一遍流程,然后再使用payload

http://127.0.0.1/thinkphp3/index.php/home/index/getuserid?id=1)%20and%20database()=%27thinkphp3%27%20--

断点调试

首先进入M方法,I方法。官方文档很详细。不再累述。我们看重要部分

I方法的默认过滤filter是html实体编码,还有一个think_filter

看条件 is_array( d a t a ) 就 这 一 条 , data)就这一条, data)data不满足要求,进入不了think_filter()函数里面

也可以看看里面到底过滤了什么

报错注入没有过滤。。

接着来到where方法

大体意思是把where的值放到options[‘where’]里面

接着来到find方法

跟进_parseOptions函数()

获取表名别名。跟进到重要部分

条件满足,往下走

这儿的判断条件不满足(如果第三个参数设置为 true,函数只有在元素存在于数组中且数据类型与给定值相同时才返回 true。)

也看看里面到底是什么

强转类型

跟进到_options_filter函数

一个空函数

紧接着跟进select

进入select跟到parsesql()函数

进入parseSql函数后来到parsewhere函数

进入parseWhere函数

一直跟进到parsethinkwhere

进入函数

满足$key为_string

进入字符串查询条件,把val的值直接赋给wherestr

后面就很清楚明了。

以上是关于ThinkPHP3.2.3 where注入的主要内容,如果未能解决你的问题,请参考以下文章

11-PHP代码审计——thinkphp3.2.3 find,select,delete注入漏洞

ThinkPHP3.2.x SQL注入

10-PHP代码审计——thinkphp3.2.3 update注入漏洞

10-PHP代码审计——thinkphp3.2.3 update注入漏洞

thinkPHP3.2.3sql注入漏洞

thinkphp3.2.3 查询时使用where+select查询出来的比find查询多一个空数组