当前位置: 首页 > news >正文

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

目录

适用版本

环境搭建

文件下载安装

配置文件修改

漏洞分析


适用版本

注:thinkphp版本:5.0.13<=ThinkPHP<=5.0.155.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处漏洞

目录 适用版本 环境搭建 文件下载安装 配置文件修改 漏洞分析 适用版本 注&#xff1a;thinkphp版本&#xff1a;5.0.13<ThinkPHP<5.0.15 、 5.1.0<ThinkPHP<5.1.5 环境搭建 文件下载安装 在github上面下载相应版本&#xff0c;下载think文件&#xff0c;…...

30集 如何编写ESP32程序接入AIGC实现更多有趣的功能-《MCU嵌入式AI开发笔记》

30集 如何编写ESP32程序接入AIGC实现更多有趣的功能&#xff08;温度&#xff09;-《MCU嵌入式AI开发笔记》 前言 之前我们建立了ESP-IDF和ESP-ADF开发环境&#xff0c;验证了硬件&#xff0c;验证了AI-CHAT的AI聊天工程&#xff0c;并且深入学习了cmake编译过程&#xff0c;…...

【JUC】Java对象内存布局和对象头

文章目录 面试题Object object new Object() 谈谈你对这句话的理解&#xff1f; 对象在堆内存中存储布局权威定义&#xff08;周志明老师JVM第三版&#xff09;对象在堆内存中的存储布局详解对象头的MarkWord源码对象标记源码 对象内存布局&#xff08;使用JOL证明&#xff09…...

简单介绍一下css中transform的内容

在CSS中&#xff0c;transform属性用于对元素进行变换&#xff0c;包括旋转、缩放、倾斜和平移等操作。以下是transform属性中常用的属性&#xff1a; translate&#xff1a;用于元素的平移操作&#xff0c;可以指定元素在X轴和Y轴方向上的平移距离。 rotate&#xff1a;用于元…...

C 循环

C 循环 在C编程语言中&#xff0c;循环是一种控制结构&#xff0c;它允许我们重复执行一段代码多次。这是编程中非常基础且强大的功能&#xff0c;广泛应用于各种算法和数据处理的场景中。本文将详细介绍C语言中的循环概念&#xff0c;包括不同类型的循环语句及其使用方法。 …...

什么是设计模式?一文理解,通俗易懂!

前言 最近在学框架的时候&#xff0c;老师总是时不时带两句设计模式&#xff0c;什么工厂模式&#xff0c;单例模式&#xff0c;开发框架用到就提一嘴&#xff0c;但是没有细讲&#xff0c;为了搞懂啥是设计模式&#xff0c;为哈开发框架用到它&#xff0c;我就查找资料&#…...

doxygen制作接口文档

系列文章目录 文章目录 系列文章目录前言一、下载二、安装三、代码注释四、使用doxygen生成文档 前言 每次手动写接口文档太痛苦了&#xff0c;现在福利来了–doxygen Doxygen是软件开发中广泛使用的文档生成器工具。它自动从源代码注释生成文档&#xff0c;解析有关类、函数和…...

PDF怎么在线转Word?介绍四种转换方案

PDF怎么在线转Word&#xff1f;在数字化办公时代&#xff0c;文档的互换性变得尤为重要。PDF格式因其跨平台兼容性和版面固定性而广受欢迎&#xff0c;但有时我们可能需要将PDF文件转换为Word文档&#xff0c;以便进行编辑或进一步处理。以下是四种常见的在线PDF转Word的方法&a…...

大数据应用型产品设计方法及行业案例介绍(可编辑110页PPT)

引言&#xff1a;随着信息技术的飞速发展&#xff0c;大数据已成为推动各行各业创新与变革的重要力量。大数据应用型产品&#xff0c;作为连接海量数据与实际应用需求的桥梁&#xff0c;其设计方法不仅要求深入理解数据特性&#xff0c;还需精准把握用户需求&#xff0c;以实现…...

【Python零基础学习】Python环境安装和IDE选择

文章目录 前言一、Python介绍二、Python下载安装三、IDE选择VS CodePyCharm 四、打印Hello Python World使用cmd使用VS Code 总结 前言 本文是笔者学习Python语言的开篇文章了&#xff0c;Python语法相对比较简单&#xff0c;对编程初学者而言十分友好&#xff0c;应用极其广泛…...

【langchain学习】使用LangChain创建具有上下文感知的问答系统

探讨如何使用LangChain库创建一个上下文感知的问答系统。这个系统能够根据用户的聊天历史&#xff0c;将当前问题转化为一个独立的问题&#xff0c;接着根据上下文提供准确的答案。 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版本升级计划…...

海南云亿商务咨询有限公司放大电商品牌影响力

在数字化浪潮席卷全球的今天&#xff0c;电商行业以其独特的魅力和无限潜力&#xff0c;成为了推动经济发展的重要力量。而在这片浩瀚的电商海洋中&#xff0c;抖音电商以其独特的短视频直播模式&#xff0c;迅速崛起为一颗璀璨的新星&#xff0c;引领着新一轮的消费潮流。作为…...

用exceljs和file-saver插件实现纯前端表格导出Excel(支持样式配置,多级表头)

exceljs在Jquery&#xff08;HTML&#xff09;和vue项目中实现导出功能 前言Jquery&#xff08;HTML&#xff09;中实现导出第一步&#xff0c;先在项目本地中导入exceljs和file-saver包第二步&#xff0c;封装导出Excel方法&#xff08;可直接复制粘贴使用&#xff09;第三步&…...

TIA博途_下载时提示密码错误,但是之前并没有设置过密码的解决办法

TIA博途_下载时提示密码错误,但是之前并没有设置过密码的解决办法 如下图所示,下载程序时提示:在线检查保护机密PLC组态数据的密码时出错。 原因: 自 TIA Portal V17 起,新增了安全向导用于帮助客户快速进行安全相关的设置。即保护机密的PLC组态数据功能导致出现下载异常。…...

使用消息队列、rocketMq实现通信

1背景 springboot框架&#xff0c; 2需求 后端需要调用一个类似于api这种作用的小工具&#xff0c;获得工具的返回值&#xff0c;后端再根据客户端的返回值进行更新数据操作 3讨论 1工具开发者使用的是python,将工具封装起来&#xff0c;暴露成web接口供后端调用 2方式一能…...

通过LLM大模型将「白雪公主的故事」转为图数据存储

&#x1f4a1; 本次将使用LLM大模型将「白雪公主的故事」转为图数据存储于neo4j数据库中&#xff0c;并展示图数据部分的效果 故事内容 很久很久以前&#xff0c;在一个遥远的王国里&#xff0c;有一位美丽的**王后**生下了一个皮肤像雪一样白皙、嘴唇像血一样鲜红的**女儿**…...

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…...

线程与多线程(二)

线程与多线程&#xff08;二&#xff09; 一、线程互斥1、相关概念 二、互斥锁1、介绍2、使用场景3、初始化&#xff08;1&#xff09;函数&#xff08;2&#xff09;概念 4、销毁&#xff08;1&#xff09;函数&#xff08;2&#xff09;概念 5、加锁&#xff08;1&#xff09…...

算法板子:欧拉函数——求一个数的欧拉函数、线性时间内求1~n所有数的欧拉函数

目录 1. 欧拉函数 &#xff08;1&#xff09;概念 &#xff08;2&#xff09;性质 &#xff08;3&#xff09;计算公式 2. 求一个数的欧拉函数 &#xff08;1&#xff09;模拟过程 &#xff08;2&#xff09;代码 3. 线性时间内求1~n所有数的欧拉函数——筛法求欧拉函…...

智慧工地云平台源码,基于微服务架构+Java+Spring Cloud +UniApp +MySql

智慧工地管理云平台系统&#xff0c;智慧工地全套源码&#xff0c;java版智慧工地源码&#xff0c;支持PC端、大屏端、移动端。 智慧工地聚焦建筑行业的市场需求&#xff0c;提供“平台网络终端”的整体解决方案&#xff0c;提供劳务管理、视频管理、智能监测、绿色施工、安全管…...

【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密

在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...

智能在线客服平台:数字化时代企业连接用户的 AI 中枢

随着互联网技术的飞速发展&#xff0c;消费者期望能够随时随地与企业进行交流。在线客服平台作为连接企业与客户的重要桥梁&#xff0c;不仅优化了客户体验&#xff0c;还提升了企业的服务效率和市场竞争力。本文将探讨在线客服平台的重要性、技术进展、实际应用&#xff0c;并…...

Keil 中设置 STM32 Flash 和 RAM 地址详解

文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...

C++ 基础特性深度解析

目录 引言 一、命名空间&#xff08;namespace&#xff09; C 中的命名空间​ 与 C 语言的对比​ 二、缺省参数​ C 中的缺省参数​ 与 C 语言的对比​ 三、引用&#xff08;reference&#xff09;​ C 中的引用​ 与 C 语言的对比​ 四、inline&#xff08;内联函数…...

【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)

🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...

C++.OpenGL (10/64)基础光照(Basic Lighting)

基础光照(Basic Lighting) 冯氏光照模型(Phong Lighting Model) #mermaid-svg-GLdskXwWINxNGHso {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-GLdskXwWINxNGHso .error-icon{fill:#552222;}#mermaid-svg-GLd…...

大数据学习(132)-HIve数据分析

​​​​&#x1f34b;&#x1f34b;大数据学习&#x1f34b;&#x1f34b; &#x1f525;系列专栏&#xff1a; &#x1f451;哲学语录: 用力所能及&#xff0c;改变世界。 &#x1f496;如果觉得博主的文章还不错的话&#xff0c;请点赞&#x1f44d;收藏⭐️留言&#x1f4…...

适应性Java用于现代 API:REST、GraphQL 和事件驱动

在快速发展的软件开发领域&#xff0c;REST、GraphQL 和事件驱动架构等新的 API 标准对于构建可扩展、高效的系统至关重要。Java 在现代 API 方面以其在企业应用中的稳定性而闻名&#xff0c;不断适应这些现代范式的需求。随着不断发展的生态系统&#xff0c;Java 在现代 API 方…...

MySQL 主从同步异常处理

阅读原文&#xff1a;https://www.xiaozaoshu.top/articles/mysql-m-s-update-pk MySQL 做双主&#xff0c;遇到的这个错误&#xff1a; Could not execute Update_rows event on table ... Error_code: 1032是 MySQL 主从复制时的经典错误之一&#xff0c;通常表示&#xff…...