杂项
使用短助记符
选项:-z
输入所有想要使用的选项和开关是很乏味的事情,特别是对于那些常用的选项和开关(例如:--batch --random-agent --ignore-proxy --technique=BEU)。有一个更简短的方法来处理这个问题。在 sqlmap 中,它被称为“助记符”。
使用选项 -z,每个选项和开关可以用较短的助记符形式,并用逗号(,)分隔,其中助记符代表原始名称的第一个任意选择的部分。选项和开关没有严格映射到他们各自精简后的部分。唯一需要满足的条件是没有其他选项和开关使用了与之相同的前缀。
例如:
$ python sqlmap.py --batch --random-agent --ignore-proxy --technique=BEU -u "ww\
w.target.com/vuln.php?id=1"可以用短助记符形式(多种方法之一)写成:
$ python sqlmap.py -z "bat,randoma,ign,tec=BEU" -u "www.target.com/vuln.php?id=\
1"另一个例子:
$ python sqlmap.py --ignore-proxy --flush-session --technique=U --dump -D testd\
b -T users -u "www.target.com/vuln.php?id=1"可以用短助记符形式写成:
$ python sqlmap.py -z "ign,flu,bat,tec=U,dump,D=testdb,T=users" -u "www.target.\
com/vuln.php?id=1"警告成功的 SQL 注入检测
选项:--alert
发现 SQL 注入时发出“哔”声
开关:--beep
如果用户使用了开关 --beep,那么在发现 SQL 注入时,sqlmap 会立即发出“哔”的警告声。当测试的目标 URLs 是大批量列表(选项 -m)时特别有用。
清除 DBMS(Database Management System,数据库管理系统)中特定的 sqlmap UDF(s) 和表
开关:--cleanup
建议在完成底层操作系统或文件系统的接管后,清理后端 DBMS 中的 sqlmap 临时表(如 sqlmapoutput)和用户定义函数。使用 --cleanup 开关将尽可能地清理 DBMS 和文件系统。
检查依赖关系
开关:--dependencies
在某些特殊情况下,sqlmap 需要独立安装额外的第三方库(例如:选项 -d,开关 --os-pwn 之于 icmpsh 隧道,选项 --auth-type 之于 NTLM 类型的 HTTP 认证等。),只在这种特殊情况下会警告用户。不过,如果你想独立检查所有这些额外的第三方库依赖关系,可以使用开关 --dependencies。
禁用控制台输出着色
开关:--disable-coloring
默认情况下,sqlmap 输出到控制台时使用着色。你可以使用此开关禁用控制台输出着色,以避免不期望的效果(例如:控制台中未解析的 ANSI 代码着色效果,像 \x01\x1b[0;32m\x02[INFO])。
使用特定页码的 Google dork 结果
选项:--gpage
默认情况下,使用选项 -g 时,sqlmap 会使用 Google 搜索得到的前 100 个 URLs 进行进一步的 SQL 注入测试。结合此选项,你可以使用它(--gpage)指定除第一页以外的页面以检索目标 URLs。
使用 HTTP 参数污染
开关:--hpp
HTTP 参数污染(HPP)是一种绕过 WAF/IPS 防护机制(这里 有相关介绍)的方法,对 ASP/IIS 和 ASP.NET/IIS 平台尤其有效。如果你怀疑目标使用了这种防护机制,可以尝试使用此开关以绕过它。
跳过启发式检测 WAF/IPS 防护
开关:--skip-waf
默认情况下,sqlmap 自动在一个启动请求中发送一个虚假的参数值,其中包含一个有意“可疑”的 SQL 注入 payload(例如:...&foobar=AND 1=1 UNION ALL SELECT 1,2,3,table_name FROM information_schema.tables WHERE 2>1)。如果目标响应与原始请求响应不同,那么它很可能存在防护机制。
sqlmap 会自动尝试识别后端 WAF/IPS 防护(如果有),以便用户执行后续对应步骤 (例如:通过选项 --tamper 使用篡改脚本)。目前大约支持 80 种不同的产品 (例如:Airlock,Barracuda WAF 等)。如果有任何问题,用户可以使用开关 --skip-waf 来禁用此机制。
伪装智能手机
开关:--mobile
有时 Web 服务器向手机提供的是不同于电脑的接口。在这种情况下,你可以强制使用预定义好的智能手机 HTTP User-Agent 头部值。使用此开关,sqlmap 将询问你选择一种流行的智能手机,它将在当前运行中进行伪装。
运行示例:
离线工作模式(仅使用会话数据)
开关:--offline
使用开关 --offline,sqlmap 在数据枚举中将仅使用上一个会话的数据。这基本上意味着在这样的运行过程中是零连接尝试的。
安全地删除 data 目录中所有内容
开关:--purge
如果用户决定要安全地删除 sqlmap data 目录(例如 $HOME/.local/share/sqlmap)中的所有内容,包括之前 sqlmap 运行过的所有目标详细信息,可以使用开关 --purge。在清除时,data 目录中的(子)目录中的所有文件将被随机数据覆盖、截断和被重命名为随意名,(子)目录也将被重命名为随意名,最后整个目录树将被删除。
运行示例:
只在使用启发式检测时才进行彻底的测试
开关:--smart
某些情况下,用户拥有大量潜在目标 URL(例如:使用选项 -m)列表,同时想要尽快找到易受攻击的目标。如果使用了开关 --smart,则只有能引发 DBMS 错误的参数会在进一步的扫描中被使用。否则会被跳过。
针对 MySQL 目标的示例:
根据 payloads 和/或标题选择(或跳过)测试
选项:--test-filter
如果你想根据 payloads 和/或标题过滤测试,可以使用此选项。例如,要测试所有包含 ROW 关键字的 payloads,可以使用 --test-filter=ROW。
针对 MySQL 目标的示例:
选项:--test-skip=TEST
如果你想根据 payloads 和/或标题跳过测试,可以使用此选项。例如,想要跳过包含 BENCHMARK 关键字的 payloads,可以使用 --test-skip=BENCHMARK。
交互式 sqlmap shell
开关:--shell
使用开关 --shell,用户可以获取交互式 sqlmap shell,它包含所有先前运行的历史记录,包括使用过的选项和/或开关:
适合初学者使用的向导界面
开关:--wizard
sqlmap 为初学者提供了一个向导界面,它使用包含尽可能少的问题的简单工作流。如果用户输入目标 URL 并使用了默认设置(例如:按 Enter),则应该在工作流结束时正确设置 sqlmap 运行环境。
针对 Microsoft SQL Server 目标的示例:
最后更新于
这有帮助吗?