ThinkPHP5漏洞学习
Contents
ThinkPHP 5基础
以ThinkPHP5.1.x版本为例
composer create-project topthink/think=5.1.36 thinkphp5.1.36
ThinkPHP5.1完全开发手册
先来了解目录架构,这里直接看手册
https://www.kancloud.cn/manual/thinkphp5_1/353950
访问模式
5.1
的 URL 访问受路由决定,如果在没有定义或匹配路由的情况下(并且没有开启强制路由),则基于
/index.php(或者其它入口文件)/模块/控制器/操作/参数/值…
请求参数
继承了控制器基类think\Controller
直接使用this->request->param('name');
来获取请求参数
Facade
调用Request::param('name');
助手函数request()->param('name');
漏洞详解
parseWhereItem未过滤处理where查询表达式
漏洞 Demo
|
|
Poc ) union select 1,2,updatexml(1,concat(1,user(),1),1)--+
debug
断点调试,跟进where()
方法
这里跟进parseWhereExp()
方法,
利用whereExp
来处理传入的$username
,继续跟进whereExp()
方法
进行了赋值之后,直接返回,
便进入到select()
方法里面,和ThinkPHP3 SQL 注入
有类似之处,这里直接进入parseWhere()
方法里面进行了返回
然后进行了一系列操作之后,就直接执行了。