Thinkphp 5.1.24 parseKey缺陷导致聚合注入 分析
测试url:
http://127.0.0.1/thinkphp/thinkphp_5.1.24/public/index.php/index/index/sqli2?id=2
控制器是获取id参数作为进行聚合查询的字段名,如下图所示

看一下存在漏洞的parseKey方法

可以看到,这里直接在$key的前后加上反引号就直接返回了。根据前面几个漏洞的分析我们可以知道parseKey是用来解析字段名的。对于insert和update之类的数据,程序一般是字段名固定,数据和where语句的等于号之后的值部分可控,因此在这两种查询中parseKey里的参数是用户接触不到的【update member set money=$m where id=$id】。而对于聚合查询而言,一共就只需要一个字段名参数【select max($id) from member】,如果用户可控,就刚好在parseKey进行了拼接。
调试一下,url如下:
http://127.0.0.1/thinkphp/thinkphp_5.1.24/public/index.php/index/index/sqli2?id=kkk



跟进aggregate

跟进parseKey,注意这里的第三个参数为true

可以看到,由于第三个参数是true,所以143行是一个恒真条件,然后在144行在$key前后加上反引号`,最后直接返回。
我们在最终执行SQL语句处看一下最后的SQL语句是啥。

可以看到直接拼接了进去。尝试payload:
id`) from member where updatexml(1,concat(0x7e,user(),0x7e),1) %23

可以看到,我们的数据成功逃逸出了反引号和括号。

不过这个payload的限制就是payload前半部分的id`) from member必须是存在的字段名和表名,否则前半部分就会报错。如果师傅们有啥姿势欢迎留言~
Thinkphp 5.1.24 parseKey缺陷导致聚合注入 分析的更多相关文章
- Thinkphp 5.1.7 parseData缺陷导致insert/update注入 分析
		
目录 环境搭建 分析 参考 环境搭建 $ composer create-project topthink/think thinkphp-5.1.7 修改composer.json 5.1.* =&g ...
 - Thinkphp 5.0.15 设计缺陷导致Insert/update-SQL注入 分析
		
分析 与上一个漏洞类似,这个也是前端可以传入一个数组变量,如['exp','123','123'],后端根据array[0]来将array[1]和array[2]直接拼接到SQL语句中. 由于TP只是 ...
 - Thinkphp 3.2.3 parseWhere设计缺陷导致update/delete注入 分析
		
目录 分析 总结 分析 首先看一下控制器,功能是根据用户传来的id,修改对应用户的密码. 13行把用户传来的id参数送入where()作为SQL语句中的WHERE语句,将pwd参数送入save()作为 ...
 - 22.ThinkPHP5框架缺陷导致远程命令执行
		
前言: 昨天爆出了ThinkPHP5框架缺陷导致远程命令执行,大佬们都赶上潮流挖洞,小白还是默默学习一下这个漏洞 漏洞影响范围: Thinkphp 5.1.0 - 5.1.31 Thinkphp 5. ...
 - thinkphp关闭调试模式(APP_DEBUG => false),导致程序出错
		
thinkphp关闭调试模式(APP_DEBUG => false),导致程序出错,开启调试模式,不报错,怎么解决? 查看Logs日志记录: [ --29T09::+: ] 113.108.11 ...
 - 阿里云提示Discuz uc.key泄露导致代码注入漏洞uc.php的解决方法
		
适用所有用UC整合 阿里云提示漏洞: discuz中的/api/uc.php存在代码写入漏洞,导致黑客可写入恶意代码获取uckey,.......... 漏洞名称:Discuz uc.key泄露导致代 ...
 - joomla \libraries\joomla\session\session.php 反序列化截断畸形字符串导致对象注入漏洞
		
catalog . 漏洞描述 . PHP SESSION持久化 . PHP 序列化/反序列化内核实现 . 漏洞代码分析 . POC构造技巧 . 防御方案 . Code Pathc方案 1. 漏洞描述 ...
 - 最新版SEMCMS_PHP_3.5  过滤不严导致sql注入
		
一.漏洞分析 在分析过程中看到网上已经有人发现semcms V2.4存在过滤不严导致sql注入的漏洞,不知道咋还没改,而且最新版过滤的关键字更少了. 首先查看首页文件index.php的代码 < ...
 - 【转】STM32擦除内部FLASH时间过长导致IWDG复位分析
		
@20119-01-29 [小记] STM32擦除内部FLASH时间过长导致IWDG复位分析
 
随机推荐
- 《Java基础知识》Java集合(Collection)
			
作为一个Developer,Java集合类是我们在工作中运用最多的.最频繁的类.相比于数组(Array)来说,集合类的长度可变,更加适合于现代开发需求: Java集合就像一个容器,可以存储任何类型的数 ...
 - 由malloc和new引发的段错误
			
class Queue{ private: struct node{ string data; struct node * next,*priv; } private: struct node * p ...
 - .NET Core使用RabbitMQ
			
RabbitMQ简介 RabbitMQ是一个开源的,基于AMQP(Advanced Message Queuing Protocol)协议的完整的可复用的企业级消息队,RabbitMQ可以实现点对点, ...
 - vue-UI(mui和muit-UI)
			
MUI和MUIT-UI 这里使用了连个UI---mui和mit-ui mit-ui是基于vue.js的,而mui是一个高性能前端框架(H5+提供的),类似于bootstrap,所以在引入时区别还是很大 ...
 - 从一个OutOfMemoryError  学会了分析Java内存泄漏问题
			
以前都是好好的,最近出现了 oom. 问题 开始是: java.lang.OutOfMemoryError: Java heap space -- :: --- [nio--exec-] c.e.p. ...
 - IT兄弟连 HTML5教程 使用盒子模型的浮动布局
			
虽然使用绝对定位可以实现页面布局,但由于调整某个盒子模型时其他盒子模型的位置并不会跟着改变,所以并不是布局的首选方式.而使用浮动的盒子模型可以向左或向右移动,直到它的外边缘碰到包含它的盒子模型边框或另 ...
 - 如何提高 PHP 代码的质量?第三:端到端 / 集成测试
			
在本系列的最后一部分,是时候设置端到端 / 集成测试环境,并确保我们已经准备好检查我们工作的质量. 在本系列的前几部分中,我们建立了一个构建工具,一些静态代码分析器,并开始编写单元测试. 为了使我们的 ...
 - UWP 记一次x64平台无法单步调试的bug
			
是这样的,平时开发uwp程序,都是用x86架构进行部署和调试.但是有时候需要在XBOX上进行调试,所以架构需要改成x64进行操作. 但是最近x64位下不能进行调试了. 搜遍网上的各种教程,也是各有各的 ...
 - 使用VeeValidate的data-vv-scope指定验证范围
			
<div class="login" v-show="activeTab === 1"> <div class="panel-con ...
 - Laravel6实现第三方 微信登录
			
目前很多的网站中都会存在很多的交互功能,从而降低用户的操作难度,特此带来微信的第三方登录的项目实战功能开发.对于本实例中的开发内容,就不在使用原生的内容,而是直接使用别人写好的封装的类库. 1. 安装 ...