一款先进的跨平台工具,用于自动化检测和利用 SQL 注入安全漏洞。

pip3python3 -m pip install --upgrade -r requirements.txtpython3 setup.py install 或 python3 -m pip install -e .ghauri --help 命令访问和运行 ghauri。或
您可以通过克隆 GitHub 仓库下载最新版本的 Ghauri。
git clone https://github.com/r0oth3x49/ghauri.git
--proxy-r file.txt--start 1 --stop 2--skip-urlencode--sql-shell(实验性)--fresh-queries--hostname--update
ghauri --update 命令获取最新版本。
作者: Nasir khan ()
用法: ghauri -u URL [选项]
一款跨平台的基于 Python 的高级 SQL 注入检测与利用工具。
通用:
-h, --help 显示帮助信息。
--version 显示版本号。
--update 更新 ghauri
-v VERBOSE 详细级别: 1-5(默认 1)。
--batch 从不询问用户输入,使用默认行为
--flush-session 刷新当前目标的会话文件
--fresh-queries 忽略会话文件中存储的查询结果
--test-filter 根据标题选择测试载荷(实验性)
目标:
必须提供以下选项之一来定义目标
-u URL, --url URL 目标 URL(例如 'http://www.site.com/vuln.php?id=1')
-m BULKFILE 扫描文本文件中给出的多个目标
-r REQUESTFILE 从文件加载 HTTP 请求
请求:
这些选项可用于指定如何连接到目标 URL
-A, --user-agent HTTP User-Agent 标头值
-H, --header 额外标头(例如 "X-Forwarded-For: 127.0.0.1")
--mobile 通过 HTTP User-Agent 标头模拟智能手机
--random-agent 使用随机选择的 HTTP User-Agent 标头值
--host HTTP Host 标头值
--data 通过 POST 发送的数据字符串(例如 "id=1")
--cookie HTTP Cookie 标头值(例如 "PHPSESSID=a8d127e..")
--referer HTTP Referer 标头值
--headers 额外标头(例如 "Accept-Language: fr\nETag: 123")
--proxy 使用代理连接到目标 URL
--delay 每个 HTTP 请求之间的延迟(秒)
--timeout 超时连接等待时间(秒,默认 30)
--retries 连接错误时的重试次数(默认 3)
--confirm 确认注入的载荷。
--ignore-code 忽略(有问题的)HTTP 错误码(例如 401)
--skip-urlencode 跳过载荷数据的 URL 编码
--force-ssl 强制使用 SSL/HTTPS
优化:
这些选项可用于优化 ghauri 的性能
--threads THREADS 最大并发 HTTP(s) 请求数(默认 1)
注入:
这些选项可用于指定要测试的参数、提供自定义注入载荷和可选篡改脚本
-p TESTPARAMETER 可测试的参数
--dbms DBMS 强制后端 DBMS 为指定值
--prefix 注入载荷前缀字符串
--suffix 注入载荷后缀字符串
--safe-chars 跳过特定字符的 URL 编码(例如 --safe-chars="[]")
--fetch-using 使用不同的运算符获取数据(例如 --fetch-using=between/in)
检测:
这些选项可用于定制检测阶段
--level LEVEL 执行测试的级别(1-3,默认 1)
--code CODE 查询结果为真时匹配的 HTTP 状态码
--string 查询结果为真时匹配的字符串
--not-string 查询结果为假时匹配的字符串
--text-only 仅基于文本内容比较页面
技术:
这些选项可用于调整特定 SQL 注入技术的测试
--technique TECH 使用的 SQL 注入技术(默认 "BEST")
--time-sec TIMESEC 延迟 DBMS 响应的秒数(默认 5)
枚举:
这些选项可用于枚举后端数据库管理系统信息、结构以及表中的数据。
-b, --banner 获取 DBMS 横幅信息
--current-user 获取 DBMS 当前用户
--current-db 获取 DBMS 当前数据库
--hostname 获取 DBMS 服务器主机名
--dbs 枚举 DBMS 数据库
--tables 枚举 DBMS 数据库表
--columns 枚举 DBMS 数据库表列
--count 检索表的条目数
--dump 转储 DBMS 数据库表条目
-D DB 要枚举的 DBMS 数据库
-T TBL 要枚举的 DBMS 数据库表
-C COLS 要枚举的 DBMS 数据库表列
--start 从偏移量开始检索数据库/表/列/转储的条目
--stop 检索到偏移量为止的数据库/表/列/转储条目
--sql-shell 提示进入交互式 SQL Shell(实验性)
示例:
ghauri -u http://www.site.com/vuln.php?id=1 --dbs
未经事先双方同意,将 Ghauri 用于攻击目标是非法的。
最终用户有责任遵守所有适用的地方、州和联邦法律。
开发者不承担任何责任,也不对因使用本程序造成的任何误用或损害负责。
有许多文章和帖子强调用户在使用 Ghauri 时相比 SQLMap 取得了成功。虽然我并未直接比较 Ghauri 与 SQLMap,但许多用户已经这么做了。我启动这个项目是因为在每日工作中,即使面对看似简单的 SQL 注入,我也经常在配置和使用 SQLMap 时遇到重大挑战。尽管这些注入看起来很简单,但 SQLMap 却常常无法检测到它们。在一位朋友的鼓励下,我决定创建自己的工具。我曾经编写过许多专为特定情况设计的利用脚本,我意识到将这些技术整合到单个模块中的潜在好处。这促成了 Ghauri 的诞生,它受到了社区的欢迎,并因其有效性获得了积极的反馈和星标。
甚至 Stamparam 也认可了 Ghauri,在一篇推文中将其描述为“内部重写”,强调了其内部机制的重要性。
例如,您可以将一个易受攻击的 HTTP 请求保存到文件中(一个需要身份验证的 SQLi),然后使用 -r 开关分别提供给 Ghauri 和 SQLMap。无需自定义配置,结果将不言自明。
Ghauri 既以类似浏览器的方式运行,也采用其独特的方法,自动切换到不同的数据提取技术和绕过机制。再次说明,这并不是直接比较,因为 Ghauri 仍有许多功能待实现,而 SQLMap 已经功能丰富。然而,Ghauri 总能可靠地完成所需的任务。
自从开发了这个工具,我很少再使用 SQLMap,除非在少数 Ghauri 仍在改进的案例中。
我鼓励您亲自尝试。 谢谢。
--ignore-code--count-m(实验性)--random-agent, --mobile