thinkphp漏洞之sql注入漏洞-builder处漏洞

ops/2024/9/20 1:25:48/ 标签: 渗透, SQL注入, thinkphp, php, 学习

目录

适用版本

环境搭建

文件下载安装

配置文件修改

漏洞分析


适用版本

注:php>thinkphp版本:5.0.13<=ThinkPHP<=5.0.155.1.0<=ThinkPHP<=5.1.5

环境搭建

文件下载安装

在github上面下载相应版本,下载think文件,下载framework文件,然后将framework文件修改名字为php>thinkphp,然后将修改后的framework放在think文件下,然后将think放在网站目录下

配置文件修改

修改数据库连接文件,这里需要提前创建一个数据库文件

修改你的控制器

$username = request()->get('username/a');

这里是接收一个get传参,然后username/a的意思是有username传参username的值就是传参的值没有的话就是默认是a

  db('users')->insert(['username'=>$username]);

这里就是将你输入的值传道数据库里

漏洞分析

漏洞我们可以在framework中的5.0.16版本去看,因为后面的版本肯定是把前面的版本bug修复了。所以可以从里面看到bug是什么样子,看一下5.0.16官方更新了什么东西,到底是把什么修复了。

来看一下啊它的更新提交,然后看看有啥子漏洞

在builder中会有一个修改的地方

下面我们来追一下这个代码,首先输入注入语句

http://127.0.0.1:9999/php>thinkphp/think-5.0.15/public/index.php?username[0]=inc&username[1]=updatexml(1,concat(0x7,user(),0x7e),1)&username[2]=1

这个需要开启调试模式,注入成功,将user回显了过来

在这里下断,看他一步步执行步骤

首先username的值为0="inc",1="updatexml(1,concat(0x7,user(),0x7e),1)",2="1"

将断点打在插入语句

 看一下他的insert这个函数,数据传输是自己写的值

然后下一步追到builder上,即上面的 $this->builder->insert() 最终调用的是 Builder 类的 insert 方法。 然后调用 parseData 方法来分析并处理数据

然后咱来看一下parseData的方法,下图代码

这个代码中上面第一个红框将data数组中遍历,然后val中就是data的值,然后看第二个红框三个不同的参数对应不同的处理方式,这三个处理方式都可以进行注入,但是insert方法中会对exp进行过滤如果数据中存在 exp ,则会被替换成 exp空格,所以三种处理方式中选项等于exp的无法使用

然后经过parseData处理的数据返回到Builder中的insert,然后下面的sql中的str_replace中的第一个数组被第二个数组中的值进行替换

 上图代码中第二个数组的意思

php">$sql = str_replace(['%INSERT%', '%TABLE%', '%FIELD%', '%DATA%', '%COMMENT%'],[$replace ? 'REPLACE' : 'INSERT',$this->parseTable($options['table'], $options),implode(' , ', $fields),implode(' , ', $values),$this->parseComment($options['comment']),], $this->insertSql);
php">$replace ? 'REPLACE' : 'INSERT'

replace有值就是INSERT没值就默认是REPLACE

php"> $this->parseTable($options['table'], $options)

option中table是users

php">implode(' , ', $fields)
implode(' , ', $values)

将数组转换为字符串,fileds是username、values就是你写的报错语句

php">  $this->parseComment($options['comment'])

数据库建表的时候允许你建一个注释comment就是这个注释,这个注释没有的话就为空然后就插入到数据库中,引起报错注入

回来以后数组的值经过替换后变成如下代码


http://www.ppmy.cn/ops/94403.html

相关文章

基于Spring Boot的可盈保险合同管理系统的设计与实现

TOC springboot146基于Spring Boot的可盈保险合同管理系统的设计与实现 绪论** 1.1 研究背景 当前社会各行业领域竞争压力非常大&#xff0c;随着当前时代的信息化&#xff0c;科学化发展&#xff0c;让社会各行业领域都争相使用新的信息技术&#xff0c;对行业内的各种相关…

RCE漏洞函数

一、rce漏洞概述 在Web应用开发中为了灵活性、简洁性等会让应用调用代码执行函数或系统命令执行函数处理&#xff0c;若应用对用户的输入过滤不严&#xff0c;容易产生远程代码执行漏洞或系统命令执行漏洞&#xff1b; 二、常见RCE漏洞函数 1.系统命令执行函数 (1) system(…

音视频开发继续学习

RGA模块 RGA模块定义 RGA模块是RV1126用于2D图像的裁剪、缩放、旋转、镜像、图片叠加等格式转换的模块。比方说&#xff1a;要把一个原分辨率1920 * 1080的视频压缩成1280 * 720的视频&#xff0c;此时就要用到RGA模块了。 RGA模块结构体定义 RGA区域属性结构体 imgType&am…

掌握文件协调的艺术:深入解析NSFileCoordinator

标题&#xff1a;掌握文件协调的艺术&#xff1a;深入解析NSFileCoordinator 在Objective-C的世界中&#xff0c;文件操作的安全性和效率至关重要。NSFileCoordinator类作为Foundation框架的一部分&#xff0c;提供了一种机制来协调对文件的访问&#xff0c;确保在多线程环境下…

Git 相关操作

首先创建一个目录 用于存放git下的代码 并进入这个目录 mkdir gitcodecd gitcode 初始化这个gitcode目录 git init .git是一个隐藏目录 注意&#xff1a;.git目录下不允许添加目录或文件 为该目录创建Name和Email 局部添加 git config user.name "你自己的名称&quo…

【ESP32】在原理图中为什么要在VCC处加几个电容

在ESP32的原理图中&#xff0c;VCC处多加几个电容是为了保证电源的稳定性和减小噪声&#xff0c;特别是在负载变化大或电源线路较长的场合。下面将分析ESP32原理图在VCC处多加几个电容的原因&#xff1a; 稳定电源供应 过滤噪声&#xff1a;电容能够过滤电源线上的高频噪声&…

【网络】IP和MAC地址的映射——ARP协议和ARP欺骗概述

目录 引言 ARP的工作机制 ARP欺骗 ARP欺骗的断网行为 ARP欺骗成为中间人 工具介绍 个人主页&#xff1a;东洛的克莱斯韦克-CSDN博客 引言 同一子网内不同主机用数据链路层的MAC地址来寻址&#xff0c;而不是子网内的私有IP&#xff08;网络层&#xff09;。数据包中的IP…

C:每日一题:单身狗

​​​​ 一、题目&#xff1a; 在一个整型数组中&#xff0c;只有一个数字出现一次&#xff0c;其他数组都是成对出现的&#xff0c;请找出那个只出现一次的数字。 整型数组 int arr[ ] {1,1,2,2,3,4,4} 二、思路分析&#xff1a; 1.&#xff0c;明确目标&#xff0c;选择…

Zon - hackmyvm

简介 靶机名称&#xff1a;Zon 难度&#xff1a;中等 靶场地址&#xff1a;https://hackmyvm.eu/machines/machine.php?vmZon 本地环境 虚拟机&#xff1a;vitual box 靶场IP&#xff08;Zon&#xff09;&#xff1a;192.168.130.72 windows_IP&#xff1a;192.168.130…

迷茫而又焦虑

没有写的就硬写 没事就喜欢写&#xff0c;我是非常喜欢写文章的人。写文章能让我静心&#xff0c;更好的了解我自己。 总的来说&#xff0c;CSDN这个文章编辑界面算是非常友好。 还有语法说明&#xff0c;让人赏心悦目。非常的舒服。 以后会写出更多优化的文章吧。 看了 java3…

优化之光:用Xdebug照亮PHP性能的阴影

标题&#xff1a;优化之光&#xff1a;用Xdebug照亮PHP性能的阴影 在PHP开发的世界中&#xff0c;性能优化是一个永恒的话题。Xdebug作为PHP开发者的得力助手&#xff0c;不仅提供了强大的调试功能&#xff0c;其性能分析工具也能帮助开发者深入理解代码的执行效率。本文将详细…

Linux权限的理解

&#x1f308;个人主页&#xff1a;Yui_ &#x1f308;Linux专栏&#xff1a;Linux &#x1f308;C语言笔记专栏&#xff1a;C语言笔记 &#x1f308;数据结构专栏&#xff1a;数据结构 文章目录 1. Linux权限的概念2.Linux权限管理2.1 文件访问者的分类2.2 文件类型和访问权限…

鱼眼相机去畸变和矫正

基于smart3D计算完空三进行导出opt文件 xx.opt文件,类似于xml文件 <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <OpticalProperties version="1.0"><Id>0</Id><Name>201空三任务_1_…

2024年TI杯E题-三子棋游戏装置方案分享-jdk123团队-附录树莓派opencv调用摄像头bug的解决,链接在文末

2024年TI杯E题-三子棋游戏装置方案分享-jdk123团队 针对于本赛题&#xff0c;本团队采用树莓派4B做出主控。但是&#xff0c;不少人在使用树莓派去利用opencv调用CSI摄像头的时候&#xff0c;往往会遇到下列问题&#xff1a; 首先&#xff0c;树莓派官网系统更新到bulleye后(之…

TDengine Cloud 助力智源未来,引领能源管理革新

在全球能源转型的大背景下&#xff0c;能源管理和储能技术的创新成为了各行业关注的焦点。随着能源需求的不断增加和对可再生能源的广泛应用&#xff0c;企业对高效、智能的能源管理解决方案的需求也在迅速增长。储能技术不仅能够平衡电力供应与需求&#xff0c;还能够在电网高…

WordPress建站之头像及字体错误修正

目录 一、谷歌字体 二、头像网址 三、后续使用中的“坑” 网站建设好以后,会发现有些卡顿,网速好的环境感觉不明写,但是差的环境就难以忍受了。这是打开网页的控制台(Console)会发现有报错信息: 这些报错信息反应了2个问题: 谷歌字体网站无法访问头像网站无法访问下面…

解锁文本奥秘:NSLinguisticTagger在Objective-C中的语言分析之旅

标题&#xff1a;解锁文本奥秘&#xff1a;NSLinguisticTagger在Objective-C中的语言分析之旅 引言 在Objective-C的丰富生态中&#xff0c;NSLinguisticTagger扮演着自然语言处理的重要角色。它提供了一套强大的API&#xff0c;用于对文本进行分词和标注&#xff0c;帮助开发…

云原生和安装Ubuntu 22系统

一.云原生简介 2004年开始&#xff0c;Google已在内部大规模地使用容器技术。 2008年&#xff0c;Google将 Cgroups合并进入了Linux内核。2013年&#xff0c;Docker项目正式发布。2014年&#xff0c;Kubernetes项目正式发布。2015年&#xff0c;由Google、Redhat 以及微软等大…

Ubuntu22.04系统中安装机器人操作系统ROS

在Ubuntu 22.04上安装ROS&#xff08;Robot Operating System&#xff09;的过程可以分为几个主要步骤。请注意&#xff0c;ROS有不同的版本&#xff08;如ROS 1的Melodic、Noetic等&#xff0c;以及ROS 2的Foxy、Humble等&#xff09;&#xff0c;这些版本对Ubuntu的支持程度可…

给迷茫的朋友一点建议吧,主要是前端的小伙伴

每一个前端开发者&#xff0c;在职业生涯的某个阶段&#xff0c;都会遇到迷茫的时候。可能你正在困惑于技术的选择&#xff0c;可能你在犹豫要不要去学后端&#xff0c;也可能你在思考如何更快地实现自己的项目。不管你面临的是哪一种困惑&#xff0c;今天我想给你推荐一个神器…