thinkphp漏洞之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就是这个注释,这个注释没有的话就为空然后就插入到数据库中,引起报错注入

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/401076.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

暑期破防实录——捡漏腾讯

序 经历了整整三个月的折磨&#xff0c;暑期实习终于尘埃落定。 其实还没收到 offer 的时候&#xff0c;还会想着到时候录用了该怎么大写特写小作文&#xff0c;但真到了这一天&#xff0c;只剩下一种解脱感&#xff0c;一种摆脱了漫长的焦虑与压抑的淡淡喜悦。 或许就像久病…

Lab 1 实验 MapReduce

&#x1f442; 若月亮没来 (若是月亮还没来)&#xff08;若是月亮还没来&#xff09; - 王宇宙Leto/乔浚丞 - 单曲 - 网易云音乐 目录 &#x1f33c;参考代码 &#x1f419;解析 &#x1f41f;mrsequential.go &#x1f41f;mrapps/wc.go &#x1f4d5;实验--准备 &…

维基知识库系统Wiki.js本地Linux环境部署并配置公网地址远程访问

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

Web3与医疗健康:去中心化技术在医疗行业的应用前景

随着区块链技术和去中心化理念的兴起&#xff0c;Web3作为新一代互联网技术正逐渐影响各个行业。在医疗健康领域&#xff0c;Web3技术的应用前景引起了广泛关注。本文将探讨Web3如何通过去中心化技术提升医疗健康行业的效率、透明度和安全性&#xff0c;并分析其在实际应用中的…

无线领夹麦克风哪个品牌音质最好?领夹麦克风十大品牌推荐

在当下自媒体盛行的时代&#xff0c;无线领夹麦克风无疑是每位创作者追求高质量音频的必备工具。它不仅解放了双手&#xff0c;让拍摄更加自由灵活&#xff0c;更以其出色的音质表现&#xff0c;成为直播、Vlog制作中的关键角色。面对市场上琳琅满目的品牌与型号&#xff0c;许…

鸿蒙「TaskPool|Worker」多线程并发使用详解,这一篇足够!

概念介绍 鸿蒙的多线程并发TaskPool和Worker&#xff0c;他们具有相同内存模型&#xff0c;线程间隔离内存不共享。在项目中若使用到&#xff0c;有几个较重要的条件或特点这里简单作出列举。 CPU密集型任务&#xff0c;说白了是计算型耗时任务&#xff1b; I/O密集型任务&…

美国消费者信心下滑与金属市场动向

消费者信心降至低点 根据密歇根大学的消费者信心指数&#xff0c;美国7月份的消费者信心跌至8个月来的最低水平。尽管技术上美国并未陷入经济衰退&#xff0c;但Affirm调查显示&#xff0c;大约60%的美国人认为经济处于衰退状态。Gallup的调查也发现&#xff0c;三分之一的美国…

《Ubuntu22.04环境下的ROS2学习笔记2》

一、在ROS2环境下创建功能包 如果您已经完成了上一小节的内容&#xff0c;那么接下来您一定渴望自己创建一个功能包来实现相应的功能。在ROS1中&#xff0c;您创建的功能包可以既写C/C&#xff0c;又写python&#xff0c;但ROS2中不允许用户这么做&#xff0c;您的C/C和python代…

uniapp 中 web-view 向 App 传递消息

web-view向App传递消息 引入官方库 在web项目中引入官方库 uni.webview.1.5.4.js &#xff0c;可以从uniapp官方示例库中下载&#xff0c;下载后放入web项目目录下即可&#xff0c;本文放在js文件夹中&#xff0c;然后在web项目页面中引入。 官网对于uni-app使用web-view的介…

WebDeveloper:1靶机

端口扫描 靶机ip地址为192.168.153.158 目录扫描 访问80端口 拼接访问 /ipdata 发现了一个流量包 放在 wireshark 查看&#xff0c;找到 账号密码 账号&#xff1a;webdeveloper 密码&#xff1a;Te5eQg&4sBS!Yr$)wf%(DcAd 拼接 /wp-login.php 找到登录框 登录成功 找…

安卓TV入门项目

android studio创建tv项目 下载android studio点此下载 配置环境变量&#xff1a; d盘新增Android文件夹&#xff0c;创建android-avd和android-sdk文件夹 环境变量名称&#xff1a;ANDROID_HOME 环境变量值&#xff1a;D:\Android\android-sdk 环境变量名称&#xff1a;ANDRO…

海外媒体发稿:法新社发稿7种吸引住读者的文章标题

写一篇科谱详细介绍文章内容在现代的媒体环境中&#xff0c;吸引住读者成为了一个重要的考验。彭博社做为国际知名的财经资讯组织&#xff0c;经过多年实践活动总结出七种吸引住读者的差异表达形式。本文将对这七种形式进行科谱详细介绍&#xff0c;可以帮助读者更好地了解并应…

星地多网融合调度平台:高效融合,智慧救援

在应急救援领域&#xff0c;通信的畅通无阻是保障救援行动成功的关键。然而&#xff0c;面对复杂多变的救援环境和多样化的通信需求&#xff0c;传统的通信系统往往难以满足现代应急救援的高标准要求。为了克服这些挑战&#xff0c;星地多网融合调度平台应运而生&#xff0c;它…

MySQL-进阶篇-索引

文章目录 1. 准备工作2. 索引概述2.1 什么是索引2.2 索引的优缺点 3. 索引的结构3.1 索引结构介绍3.2 二叉树3.3 BTree3.4 BTree3.5 MySQL 中的 BTree3.6 Hash3.7 思考题&#xff1a;为什么 InnoDB 存储引擎选择使用 BTree 索引结构 4. 索引的分类5. 索引的语法5.1 创建索引5.2…

数字营销中的人工智能 --- 完整指南 (By Hubspot)

原文作者&#xff1a;Rebecca Riserbato 原文发布日期&#xff1a;2024年3月7日 翻译和编辑&#xff1a;数字化营销工兵 【引言】 ChatGPT和谷歌巴德已经加入聊天。如果你还没有加入数字营销中关于人工智能&#xff08;AI&#xff09;的对话&#xff0c;你就错过了这个营销…

ElasticSearch数据建模

文章目录 如何处理关联关系避免过多字段避免正则/通配符/前缀查询避免空值引起的聚合不准为索引的Mapping加入Meta 信息 如何处理关联关系 Object: 优先考虑反范式&#xff08;Denormalization&#xff09; Nested: 当数据包含多数值对象&#xff0c;同时有查询需求 Child/Pa…

宝塔面板如何修改域名和网站名

目录 前言修改域名修改网站名 前言 BT宝塔面板是一款安全高效的服务器运维平台&#xff0c;windows和Linux系统都可以使用&#xff0c;安装也简单&#xff0c;相信很多开发者都在用它。 但当我们创建的网站需要更换新的域名&#xff0c;面板中的网站名官方却没有给修改的地方&…

DETR论文,基于transformer的目标检测网络 DETR:End-to-End Object Detection with Transformers

transformer的基本结构: encoder-decoder的基本流程为&#xff1a; 1&#xff09;对于输入&#xff0c;首先进行embedding操作&#xff0c;即将输入映射为向量的形式&#xff0c;包含两部分操作&#xff0c;第一部分是input embedding&#xff1a;例如&#xff0c;在NLP领域&…

动作捕捉与数字人实时交互实训室解决方案:赋能数字人微专业实践课程

随着近年来虚拟现实技术产业与元宇宙数字人产业不断发展&#xff0c;就业市场对元宇宙、影视动画、游戏、艺术创作、舞台特效、虚拟数字人、虚拟主播等行业具备相关技能人才的需求增加&#xff0c;面向数字媒体艺术设计、影视多媒体技术、广告设计与制作、电子商务、广播电视新…

【论文阅读】BoT-SORT: Robust Associations Multi-Pedestrian Tracking

题目&#xff1a;BoT-SORT: Robust Associations Multi-Pedestrian Tracking 作者&#xff1a;Nir Aharon* Roy Orfaig Ben-Zion Bobrovsky motivation: 作者来得很直接&#xff0c;就说他们用相机运动模型和优化卡尔曼做了个可以解决具有挑战的跟踪问题的算法:BOT-SORT;说他们…