当前位置:   article > 正文

ThinkPHP3.2不规范接收参数导致的SQL注入分析之exp_tp3.2 exp

tp3.2 exp

本篇文章首先是讲解利用,之后会讲解I函数为什么能绕过过滤

前提是tp没有用I函数去接收参数,具体原因会在分析之后给出

先给出测试的payload,u[0]=exp&u[1]==%27admin%27接下来我们去分析

首先看看我们index页面,看看我们的语句

在这里插入图片描述

M就不必多说上一篇已经讲过了,返回一个users模型的对象,我们直接跟进where函数,看看接收的参数username为数组

在这里插入图片描述

因为是数组原因所以只执行这一句赋值返回$this

在这里插入图片描述

接下来进入find()也就是我们的关键,继续跟进

在这里插入图片描述

首先merge参数合并这不是我们关心的地方

在这里插入图片描述

标量变量是指 int、float、string 或 bool 类型的变量。 array、object 和 resource 类型不是标量。我们的username是一个数组因此直接到下面,回到find,到最关键的地方了,准备生成sql语句了,继续跟进

在这里插入图片描述

跟进

在这里插入图片描述

继续跟进
在这里插入图片描述

这里会返回最终sql语句,因为只有where,我们直接跟进parseWhere

在这里插入图片描述

别忘了我们传入的参数

在这里插入图片描述

之后的一些非关键处理我们略过,继续跟进

在这里插入图片描述

这里进行拼接$whereStr .= $key.' '.$val[1];看到没没过滤,直接绕过了

在这里插入图片描述

最终$whereStrusername ='admin',也得到了最终的payload

在这里插入图片描述

因此,我们便可以有其他姿势了,盲注什么随便来,我们这里测试一下报错注入,没毛病的

在这里插入图片描述

接下来我们把接收参数改成I函数,他会对里面参数做处理,会在前面加一个空格,exp!=exp

在这里插入图片描述

这里也就进不去了,分析完毕

在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/480954
推荐阅读
相关标签
  

闽ICP备14008679号