eslam3kl/SQLiDetector
GitHub: eslam3kl/SQLiDetector
专注报错型 SQL 注入检测的轻量工具,通过批量发送 payload 并匹配多数据库错误模式来快速定位潜在漏洞点。
Stars: 634 | Forks: 112
# SQLiDetector
简单的 Python 脚本,配合 BurpBouty 配置文件使用,通过发送包含 14 个 payload 的多种请求,并检查 152 个针对不同数据库的正则表达式匹配模式,帮助您检测“报错型”SQL 注入 (Error based)。
```
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
| S|Q|L|i| |D|e|t|e|c|t|o|r|
| Coded By: Eslam Akl @eslam3kll & Khaled Nassar @knassar702
| Version: 1.0.0
| Blog: eslam3kl.medium.com
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
```

## 描述
该工具的核心思想是使用不同的 payload 扫描报错型 SQL 注入,例如
```
'123
''123
`123
")123
"))123
`)123
`))123
'))123
')123"123
[]123
""123
'"123
"'123
\123
```
并匹配针对不同数据库的 152 个错误正则表达式模式。
来源: https://github.com/sqlmapproject/sqlmap/blob/master/data/xml/errors.xml ## 工作原理 这非常简单,只需按以下步骤组织您的工作流程 1. 使用您的子域名抓取脚本或工具。 2. 将所有收集到的子域名传递给 httpx 或 httprobe,以仅获取存活的子域名。 3. 使用您的链接和 URL 工具抓取所有的 waybackurls,如 waybackurls、gau、gauplus 等。 4. 使用 URO 工具对它们进行过滤并减少噪音。 5. 使用 Grep 提取仅包含参数的链接。您可以使用 Grep 或 GF 工具。 6. 将最终的 URL 文件传递给该工具,它将对它们进行测试。 您传递给该工具的最终 URL 格式必须如下所示 ``` https://aykalam.com?x=test&y=fortest http://test.com?parameter=ayhaga ``` ## 安装与使用 只需运行以下命令即可安装所需的库。 ``` ~/eslam3kl/SQLiDetector# pip3 install -r requirements.txt ``` 运行该工具本身。 ``` # cat urls.txt http://testphp.vulnweb.com/artists.php?artist=1 # python3 sqlidetector.py -h usage: sqlidetector.py [-h] -f FILE [-w WORKERS] [-p PROXY] [-t TIMEOUT] [-o OUTPUT] A simple tool to detect SQL errors optional arguments: -h, --help show this help message and exit] -f FILE, --file FILE [File of the urls] -w WORKERS, --workers [WORKERS Number of threads] -p PROXY, --proxy [PROXY Proxy host] -t TIMEOUT, --timeout [TIMEOUT Connection timeout] -o OUTPUT, --output [OUTPUT [Output file] # python3 sqlidetector.py -f urls.txt -w 50 -o output.txt -t 10 ``` ## BurpBounty 模块 我创建了一个 burpbounty 配置文件,它使用相同的 payload,并将它们注入到多个位置,如 + 参数名 + 参数值 + 请求头 + 路径 我认为这更有效,并且对于那些无法使用 Python 脚本进行测试的 POST 请求会很有帮助。   ## 它是如何测试参数的? 这个工具和其他工具有什么区别? 如果我们有一个像这样的链接 `https://example.com?file=aykalam&username=eslam3kl`,那么我们有 2 个参数。它会创建 2 个可能存在漏洞的 URL。 1. 它将针对每个 payload 执行如下操作 ``` https://example.com?file=123'&username=eslam3kl https://example.com?file=aykalam&username=123' ``` 2. 它会为每个链接发送一个请求,并使用正则表达式检查是否存在匹配的模式。 3. 对于任何存在漏洞的链接,它将为其在每个进程中保存到一个单独的文件中。 ## 即将推出的更新 - [x] 输出 json 选项。 - [x] 添加代理选项。 - [x] 添加多线程以提高速度。 - [x] 添加进度条。 - [x] 添加更多 payload。 - [x] 添加 BurpBounty 配置文件。 - [x] 将 payload 注入到参数名本身中。 如果您想要贡献,请随时进行。欢迎您 :) ## 致谢 感谢 Mohamed El-Khayat 和 Orwa 提供的出色 payload 和思路。关注他们,您会学到更多 ``` https://twitter.com/Mohamed87Khayat https://twitter.com/GodfatherOrwa ``` ## 贡献者  ## 保持联系 <3 [LinkedIn](https://www.linkedin.com/in/eslam3kl/) | [博客](https://eslam3kl.medium.com/) | [Twitter](https://twitter.com/eslam3kll)
来源: https://github.com/sqlmapproject/sqlmap/blob/master/data/xml/errors.xml ## 工作原理 这非常简单,只需按以下步骤组织您的工作流程 1. 使用您的子域名抓取脚本或工具。 2. 将所有收集到的子域名传递给 httpx 或 httprobe,以仅获取存活的子域名。 3. 使用您的链接和 URL 工具抓取所有的 waybackurls,如 waybackurls、gau、gauplus 等。 4. 使用 URO 工具对它们进行过滤并减少噪音。 5. 使用 Grep 提取仅包含参数的链接。您可以使用 Grep 或 GF 工具。 6. 将最终的 URL 文件传递给该工具,它将对它们进行测试。 您传递给该工具的最终 URL 格式必须如下所示 ``` https://aykalam.com?x=test&y=fortest http://test.com?parameter=ayhaga ``` ## 安装与使用 只需运行以下命令即可安装所需的库。 ``` ~/eslam3kl/SQLiDetector# pip3 install -r requirements.txt ``` 运行该工具本身。 ``` # cat urls.txt http://testphp.vulnweb.com/artists.php?artist=1 # python3 sqlidetector.py -h usage: sqlidetector.py [-h] -f FILE [-w WORKERS] [-p PROXY] [-t TIMEOUT] [-o OUTPUT] A simple tool to detect SQL errors optional arguments: -h, --help show this help message and exit] -f FILE, --file FILE [File of the urls] -w WORKERS, --workers [WORKERS Number of threads] -p PROXY, --proxy [PROXY Proxy host] -t TIMEOUT, --timeout [TIMEOUT Connection timeout] -o OUTPUT, --output [OUTPUT [Output file] # python3 sqlidetector.py -f urls.txt -w 50 -o output.txt -t 10 ``` ## BurpBounty 模块 我创建了一个 burpbounty 配置文件,它使用相同的 payload,并将它们注入到多个位置,如 + 参数名 + 参数值 + 请求头 + 路径 我认为这更有效,并且对于那些无法使用 Python 脚本进行测试的 POST 请求会很有帮助。   ## 它是如何测试参数的? 这个工具和其他工具有什么区别? 如果我们有一个像这样的链接 `https://example.com?file=aykalam&username=eslam3kl`,那么我们有 2 个参数。它会创建 2 个可能存在漏洞的 URL。 1. 它将针对每个 payload 执行如下操作 ``` https://example.com?file=123'&username=eslam3kl https://example.com?file=aykalam&username=123' ``` 2. 它会为每个链接发送一个请求,并使用正则表达式检查是否存在匹配的模式。 3. 对于任何存在漏洞的链接,它将为其在每个进程中保存到一个单独的文件中。 ## 即将推出的更新 - [x] 输出 json 选项。 - [x] 添加代理选项。 - [x] 添加多线程以提高速度。 - [x] 添加进度条。 - [x] 添加更多 payload。 - [x] 添加 BurpBounty 配置文件。 - [x] 将 payload 注入到参数名本身中。 如果您想要贡献,请随时进行。欢迎您 :) ## 致谢 感谢 Mohamed El-Khayat 和 Orwa 提供的出色 payload 和思路。关注他们,您会学到更多 ``` https://twitter.com/Mohamed87Khayat https://twitter.com/GodfatherOrwa ``` ## 贡献者  ## 保持联系 <3 [LinkedIn](https://www.linkedin.com/in/eslam3kl/) | [博客](https://eslam3kl.medium.com/) | [Twitter](https://twitter.com/eslam3kll)
标签:Bug Bounty, BurpBounty, Burp Suite, CISA项目, HTTP请求处理, Payload生成, Python安全工具, SQLiDetector, sqlmap, SQL注入检测, Web安全, 可自定义解析器, 多数据库支持, 安全测试, 报错型SQL注入, 攻击性安全, 自动化安全工具, 蓝队分析, 错误模式匹配, 黑盒测试