thinkphp5之sql注入漏洞-builder处漏洞
目录
适用版本
环境搭建
文件下载安装
配置文件修改
漏洞分析
适用版本
注:thinkphp版本:5.0.13<=ThinkPHP<=5.0.15 、 5.1.0<=ThinkPHP<=5.1.5
环境搭建
文件下载安装
在github上面下载相应版本,下载think文件,下载framework文件,然后将framework文件修改名字为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/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中的第一个数组被第二个数组中的值进行替换

上图代码中第二个数组的意思
$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);
$replace ? 'REPLACE' : 'INSERT'
replace有值就是INSERT没值就默认是REPLACE
$this->parseTable($options['table'], $options)
option中table是users
implode(' , ', $fields)
implode(' , ', $values)
将数组转换为字符串,fileds是username、values就是你写的报错语句
$this->parseComment($options['comment'])
数据库建表的时候允许你建一个注释comment就是这个注释,这个注释没有的话就为空然后就插入到数据库中,引起报错注入
回来以后数组的值经过替换后变成如下代码
相关文章:
thinkphp5之sql注入漏洞-builder处漏洞
目录 适用版本 环境搭建 文件下载安装 配置文件修改 漏洞分析 适用版本 注:thinkphp版本:5.0.13<ThinkPHP<5.0.15 、 5.1.0<ThinkPHP<5.1.5 环境搭建 文件下载安装 在github上面下载相应版本,下载think文件,…...
30集 如何编写ESP32程序接入AIGC实现更多有趣的功能-《MCU嵌入式AI开发笔记》
30集 如何编写ESP32程序接入AIGC实现更多有趣的功能(温度)-《MCU嵌入式AI开发笔记》 前言 之前我们建立了ESP-IDF和ESP-ADF开发环境,验证了硬件,验证了AI-CHAT的AI聊天工程,并且深入学习了cmake编译过程,…...
【JUC】Java对象内存布局和对象头
文章目录 面试题Object object new Object() 谈谈你对这句话的理解? 对象在堆内存中存储布局权威定义(周志明老师JVM第三版)对象在堆内存中的存储布局详解对象头的MarkWord源码对象标记源码 对象内存布局(使用JOL证明)…...
简单介绍一下css中transform的内容
在CSS中,transform属性用于对元素进行变换,包括旋转、缩放、倾斜和平移等操作。以下是transform属性中常用的属性: translate:用于元素的平移操作,可以指定元素在X轴和Y轴方向上的平移距离。 rotate:用于元…...
C 循环
C 循环 在C编程语言中,循环是一种控制结构,它允许我们重复执行一段代码多次。这是编程中非常基础且强大的功能,广泛应用于各种算法和数据处理的场景中。本文将详细介绍C语言中的循环概念,包括不同类型的循环语句及其使用方法。 …...
什么是设计模式?一文理解,通俗易懂!
前言 最近在学框架的时候,老师总是时不时带两句设计模式,什么工厂模式,单例模式,开发框架用到就提一嘴,但是没有细讲,为了搞懂啥是设计模式,为哈开发框架用到它,我就查找资料&#…...
doxygen制作接口文档
系列文章目录 文章目录 系列文章目录前言一、下载二、安装三、代码注释四、使用doxygen生成文档 前言 每次手动写接口文档太痛苦了,现在福利来了–doxygen Doxygen是软件开发中广泛使用的文档生成器工具。它自动从源代码注释生成文档,解析有关类、函数和…...
PDF怎么在线转Word?介绍四种转换方案
PDF怎么在线转Word?在数字化办公时代,文档的互换性变得尤为重要。PDF格式因其跨平台兼容性和版面固定性而广受欢迎,但有时我们可能需要将PDF文件转换为Word文档,以便进行编辑或进一步处理。以下是四种常见的在线PDF转Word的方法&a…...
大数据应用型产品设计方法及行业案例介绍(可编辑110页PPT)
引言:随着信息技术的飞速发展,大数据已成为推动各行各业创新与变革的重要力量。大数据应用型产品,作为连接海量数据与实际应用需求的桥梁,其设计方法不仅要求深入理解数据特性,还需精准把握用户需求,以实现…...
【Python零基础学习】Python环境安装和IDE选择
文章目录 前言一、Python介绍二、Python下载安装三、IDE选择VS CodePyCharm 四、打印Hello Python World使用cmd使用VS Code 总结 前言 本文是笔者学习Python语言的开篇文章了,Python语法相对比较简单,对编程初学者而言十分友好,应用极其广泛…...
【langchain学习】使用LangChain创建具有上下文感知的问答系统
探讨如何使用LangChain库创建一个上下文感知的问答系统。这个系统能够根据用户的聊天历史,将当前问题转化为一个独立的问题,接着根据上下文提供准确的答案。 1. 导入所需模块 from operator import itemgetter from config import llm # 从config文件…...
原神4.8版本升级计划数据表
原神4.8版本角色数据升级计划表 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>原神4.8版本升级计划…...
海南云亿商务咨询有限公司放大电商品牌影响力
在数字化浪潮席卷全球的今天,电商行业以其独特的魅力和无限潜力,成为了推动经济发展的重要力量。而在这片浩瀚的电商海洋中,抖音电商以其独特的短视频直播模式,迅速崛起为一颗璀璨的新星,引领着新一轮的消费潮流。作为…...
用exceljs和file-saver插件实现纯前端表格导出Excel(支持样式配置,多级表头)
exceljs在Jquery(HTML)和vue项目中实现导出功能 前言Jquery(HTML)中实现导出第一步,先在项目本地中导入exceljs和file-saver包第二步,封装导出Excel方法(可直接复制粘贴使用)第三步&…...
TIA博途_下载时提示密码错误,但是之前并没有设置过密码的解决办法
TIA博途_下载时提示密码错误,但是之前并没有设置过密码的解决办法 如下图所示,下载程序时提示:在线检查保护机密PLC组态数据的密码时出错。 原因: 自 TIA Portal V17 起,新增了安全向导用于帮助客户快速进行安全相关的设置。即保护机密的PLC组态数据功能导致出现下载异常。…...
使用消息队列、rocketMq实现通信
1背景 springboot框架, 2需求 后端需要调用一个类似于api这种作用的小工具,获得工具的返回值,后端再根据客户端的返回值进行更新数据操作 3讨论 1工具开发者使用的是python,将工具封装起来,暴露成web接口供后端调用 2方式一能…...
通过LLM大模型将「白雪公主的故事」转为图数据存储
💡 本次将使用LLM大模型将「白雪公主的故事」转为图数据存储于neo4j数据库中,并展示图数据部分的效果 故事内容 很久很久以前,在一个遥远的王国里,有一位美丽的**王后**生下了一个皮肤像雪一样白皙、嘴唇像血一样鲜红的**女儿**…...
MyBatisPlus 第一天
数据库创建表 CREATE DATABASE mybatis_plus /*!40100 DEFAULT CHARACTER SET utf8mb4 */; use mybatis_plus; CREATE TABLE user ( id bigint(20) NOT NULL COMMENT 主键ID, name varchar(30) DEFAULT NULL COMMENT 姓名 , age int(11) DEFAULT NULL COMMENT 年龄 , email va…...
线程与多线程(二)
线程与多线程(二) 一、线程互斥1、相关概念 二、互斥锁1、介绍2、使用场景3、初始化(1)函数(2)概念 4、销毁(1)函数(2)概念 5、加锁(1)…...
算法板子:欧拉函数——求一个数的欧拉函数、线性时间内求1~n所有数的欧拉函数
目录 1. 欧拉函数 (1)概念 (2)性质 (3)计算公式 2. 求一个数的欧拉函数 (1)模拟过程 (2)代码 3. 线性时间内求1~n所有数的欧拉函数——筛法求欧拉函…...
PyTorch 2.8镜像功能体验:支持多卡计算,大幅缩短模型训练时间
PyTorch 2.8镜像功能体验:支持多卡计算,大幅缩短模型训练时间 1. PyTorch 2.8镜像概述 PyTorch 2.8镜像是一个开箱即用的深度学习环境,预装了PyTorch 2.8和CUDA工具包。这个镜像最大的亮点是支持多GPU并行计算,能够显著加速模型…...
一文吃透Redis集群:架构、原理、搭建与实战优化
在分布式系统中,Redis作为高性能的键值存储中间件,单机部署早已无法满足高并发、大容量的业务需求——当数据量突破单机内存上限、QPS达到万级以上,单机Redis的单点故障、性能瓶颈会直接影响业务稳定性。此时,Redis集群࿰…...
给OpenClaw小龙虾喂点 “数据库饲料”,它竟能替你加班到天亮?
目录 💡DBA 的痛,龙虾不懂 🦞 给“龙虾”喂点“硬菜” 📍 成为首批体验官,有福利 最近大家都在养龙虾。 龙虾越养越聪明,写代码、查资料、做分析……什么都能干。 但有一件事,现在的龙虾还…...
揭秘AI教材写作:低查重率,用AI轻松搞定教材编写难题!
编写教材需要丰富的资料作为基础,但传统的资料整理方式早已无法满足当前的需求。过去,课标文件、学术论文和教学案例等信息零散地散落在多个平台上,比如知网和教研网站,这让我们花费数天才筛选到有用的内容。而即使所有资料都收集…...
从话题数据到3D应用:用Orbbec DaBai DCL和ROS2快速搭建你的第一个点云处理流水线
从话题数据到3D应用:用Orbbec DaBai DCL和ROS2快速搭建你的第一个点云处理流水线 当你第一次看到Orbbec DaBai DCL相机输出的点云数据在RViz2中跳动时,那种将物理世界转化为数字模型的震撼感,是任何文档描述都无法替代的。作为一款支持RGB-D、…...
ViPER4Windows-Patcher 音效修复工具:让无损音质在Windows 10/11完美呈现
ViPER4Windows-Patcher 音效修复工具:让无损音质在Windows 10/11完美呈现 【免费下载链接】ViPER4Windows-Patcher Patches for fix ViPER4Windows issues on Windows-10/11. 项目地址: https://gitcode.com/gh_mirrors/vi/ViPER4Windows-Patcher dz…...
Hunyuan-MT-7B翻译模型实测:33种语言互译效果到底如何?
Hunyuan-MT-7B翻译模型实测:33种语言互译效果到底如何? 1. 引言:多语言翻译的新标杆 在全球化交流日益频繁的今天,高效准确的多语言翻译工具已成为刚需。腾讯混元团队最新开源的Hunyuan-MT-7B模型,凭借70亿参数的紧凑…...
OpenClaw镜像体验:Qwen3.5-9B云端部署避坑指南
OpenClaw镜像体验:Qwen3.5-9B云端部署避坑指南 1. 为什么选择云端镜像而非本地部署 去年冬天,当我第一次尝试在本地MacBook Pro上部署OpenClaw时,整整浪费了两个周末的时间。Node版本冲突、Python依赖缺失、CUDA驱动不兼容——这些看似简单…...
QMK Toolbox终极指南:从零开始掌握键盘固件刷写的完整教程
QMK Toolbox终极指南:从零开始掌握键盘固件刷写的完整教程 【免费下载链接】qmk_toolbox A Toolbox companion for QMK Firmware 项目地址: https://gitcode.com/gh_mirrors/qm/qmk_toolbox QMK Toolbox是机械键盘爱好者的必备神器,这款开源工具集…...
从DWG到GIS地图:手把手教你用Java提取坐标并导入PostgreSQL/PostGIS
从DWG到GIS地图:Java全链路坐标处理与PostGIS集成实战 在建筑信息模型(BIM)与地理信息系统(GIS)融合的大趋势下,DWG图纸中的几何数据正成为智慧城市建设的核心资产。作为长期从事空间数据处理的开发者&…...
