2021天翼杯(thinkphp5.0.15sql注入漏洞+)
前言:
主要是想练习一下如何在框架下挖漏洞
环境搭建
通过以下命令获取测试环境代码:
composer create-project --prefer-dist topthink/think=5.0.15 tpdemo |
将 composer.json 文件的 require 字段设置成如下:
"require": { |
然后执行 composer update
,并将 application/index/controller/Index.php 文件代码设置如下:
|
在 application/database.php 文件中配置数据库相关信息,并开启 application/config.php 中的 app_debug 和 app_trace 。创建数据库信息如下:
create database tpdemo; |
漏洞复现
insert()注入复现
这里直接就去调用insert函数,所以我直接把断点下在这里,往下看数据的变化
数据以数组的形式被传入parsedata进行数据解析
在此处直接对输入的数组数据先进行选择,后直接进行拼接
并且直接对结果进行了一个返回
后续直接将该输入拼接在insert语句的后半段造成报错注入:
select()注入复现
断点我直接搭载前面get这里,然后看他一个值的传入
首先从我们传入的数组中取值,并且值得注意的是,这个函数会递归到更深层次的数组中
接下来会进入一个过滤,很奇怪的是,在别人复现的源码里,notlike是合起来写的,所以当我们在这里写not like的时候,就可以绕过,但是不知道为什么这里的源码两个都有过滤
后面继续经过一系列拼接赋值操作,其中select函数中,where内容是可控的
wherestr的内容将被拼接为以下内容,通过$array的值进行分割后,再加上一个括号
eg: |
payload: |
https://blog.csdn.net/weixin_45669205/article/details/116464224
2021天翼杯(thinkphp5.0.15sql注入漏洞+)