sqlmap 使用手册

sqlmap 是什么

sqlmap是一款非常强大的开源 sql 自动化注入工具,可以用来检测或利用 sql 注入漏洞。

支持功能

  • 完全支持MySQL,Oracle,PostgreSQL,Microsoft SQL Server,Microsoft Access,IBM DB2,SQLite,Firebird,Sybase,SAP MaxDB和HSQLDB数据库管理系统。
  • 完全支持五种SQL注入技术:基于布尔值的盲注,基于时间的盲注,基于错误注入,联合查询注入和堆查询注入。
  • 支持通过提供DBMS凭据,IP地址,端口和数据库名称直接连接到数据库,而无需通过SQL注入。
  • 可以提供单个目标URL,从 Burp 代理或 WebScarab 代理请求日志文件获取目标列表,从文本文件获取整个HTTP请求,或通过向sqlmap提供sqlmap查询Google dork来获取目标列表搜索引擎并解析其结果页面。您还可以定义基于正则表达式的作用域,用于标识要测试的解析地址。
  • 测试提供了GET参数,POST参数,HTTP Cookie头值,HTTP用户代理头值和HTTP Referer头值来识别和利用SQL注入漏洞。还可以指定要测试的特定参数的逗号分隔列表。
  • 指定并发 HTTP(S) 请求(多线程)的最大数量的选项,以加快盲SQL注入技术。反之亦然,还可以指定在每个 HTTP(S) 请求之间保持的秒数。其他优化开关也加快了开发。
  • HTTP Cookie头字符串支持,当web应用程序需要基于cookie的身份验证,并且您有这样的数据或在您只是想测试和利用SQL注入这样的头值有用。您还可以指定始终对Cookie进行URL编码。
  • 自动处理来自应用程序的HTTP Set-Cookie头,如果会话过期,则重新建立会话。还支持测试和利用这些值。反之亦然,你也可以强制忽略任何Set-Cookie头。
  • HTTP协议基本,Digest,NTLM和证书认证支持。
  • HTTP(S)代理支持将请求传递到目标应用程序,该目标应用程序也与HTTPS请求和已验证的代理服务器一起工作。
  • 伪造HTTP Referer头值和由用户指定或从文本文件中随机选择的HTTP User-Agent标头值的选项。
  • 支持输出消息的详细程度:七个级别。
  • 支持从目标URL解析HTML表单,并针对这些页面伪造 HTTP(S) 请求,以针对漏洞测试表单参数。
  • 在用户的开关和特征方面的粒度和灵活性。
  • 支持每个查询的实时更新的估计到达时间,为用户提供检索查询输出所需的时间概览。
  • 在获取数据时自动将会话(查询及其输出,即使是部分检索)保存在文本文件上,并通过解析会话文件来恢复注入。
  • 支持从配置INI文件读取选项,而不是每次指定命令行上的参数。还支持基于提供的命令行生成配置文件。
  • 支持在本地SQLite 3数据库上复制后端数据库表结构和条目。
  • 支持从subversion存储库更新到最新的开发版本。
  • 支持解析HTTP(S)响应并向用户显示任何DBMS错误消息。
  • 与其他IT安全开源项目整合,Metasploit和w3af。

命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
        ___
__H__
___ ___["]_____ ___ ___ {1.1.2.14#dev}
|_ -| . [(] | .'| . |
|___|_ [']_|_|_|__,| _|
|_|V |_| http://sqlmap.org

Usage(用法): python sqlmap.py [options]

Options(选项):
-h, --help 显示基础帮助信息并退出
-hh 显示更详细的帮助信息并退出
--version 显示版本号并退出
-v VERBOSE 详细级别:0 - 6 (默认1)

Target(目标):
以下至少需要设置其中一个选项,设置目标URL

-d DIRECT 使用连接字符串连接到数据库
-u URL, --url=URL 目标 URL(例如 "http://www.site.com/vuln.php?id=1")
-l LOGFILE 从 Burp 或 WebScarab 代理的日志中解析目标
-x SITEMAPURL 从远程 sitemap(.xml) 中解析目标
-m BULKFILE 从文本文件中扫描多个目标
-r REQUESTFILE 从一个文件中载入 HTTP 请求
-g GOOGLEDORK 处理 Google dork 的结果作为目标URL
-c CONFIGFILE 从 INI 配置文件中加载选项

Request(请求):
这些选项可以用来指定如何连接到目标URL

--method=METHOD 使用给定的 HTTP 访问方法(例如 PUT)
--data=DATA 通过 POST 发送的数据字符串
--param-del=PARA.. 用于分割参数值的字符
--cookie=COOKIE HTTP Cookie头
--cookie-del=COO.. 用于分割 cookie 值的字符
--load-cookies=L.. 含 Netscape/wget 的 cookie 文件格式
--drop-set-cookie 忽略响应的 Set-Cookie 头信息
--user-agent=AGENT 指定 HTTP User - Agent头
--random-agent 使用随机选定的HTTP User - Agent头
--host=HOST 指定 HTTP Host 头
--referer=REFERER 指定 HTTP Referer 头
-H HEADER, --hea.. 指定其他头信息(例如 "X-Forwarded-For: 127.0.0.1")
--headers=HEADERS 指定其他多条头信息,可换行(例如 "Accept-Language: fr\nETag: 123")
--auth-type=AUTH.. HTTP身份验证类型(Basic, Digest, NTLM or PKI)
--auth-cred=AUTH.. HTTP身份验证凭据(name:password)
--auth-file=AUTH.. HTTP身份验证 PEM cert/private 文件
--ignore-401 忽略 HTTP 401(Unauthorized) 错误
--ignore-proxy 忽略系统默认的HTTP代理
--ignore-redirects 忽略重定向
--ignore-timeouts 忽略连接超时
--proxy=PROXY 使用代理连接到目标
--proxy-cred=PRO.. 代理身份验证凭据(name:password
--proxy-file=PRO.. 从文件加载代理列表
--tor 使用 Tor 匿名网络
--tor-port=TORPORT 设置 Tor 代理端口
--tor-type=TORTYPE 设置 Tor 代理类型(HTTP, SOCKS4 or SOCKS5 (默认))
--check-tor 检查 Tor 正确使用
--delay=DELAY 在每个HTTP请求之间的延迟时间,单位为秒
--timeout=TIMEOUT 等待连接超时的时间(默认为30秒)
--retries=RETRIES 连接超时后重新连接的时间(默认3秒)
--randomize=RPARAM 随机改变给定参数的值
--safe-url=SAFEURL 测试期间经常访问的 URL 地址
--safe-post=SAFE.. 将数据发送到安全 URL
--safe-req=SAFER.. 从文件加载安全 Http 请求
--safe-freq=SAFE.. 两次访问之间测试请求,给出安全的URL
--skip-urlencode 跳过载荷数据的 URL 编码
--csrf-token=CSR.. 设置 csrf token 标记名称
--csrf-url=CSRFURL 获取 csrf token URL 地址
--force-ssl 强制使用 SSL/HTTPS
--hpp 打开 hpp 参数污染
--eval=EVALCODE 运行 Python 代码来重新设置或添加值(例如
"import hashlib;id2=hashlib.md5(id).hexdigest()")

Optimization(优化):
这些选项可用于优化 sqlmap 性能

-o 开启所有优化
--predict-output 预测常见查询输出
--keep-alive 使用持久 HTTP(s) 连接
--null-connection 没有实际的 HTTP 响应体检索页面长度
--threads=THREADS 最大HTTP (s) 请求数(默认1)

Injection(注入):
这些选线可以用来指定要测试的参数,提供自定义载荷和选项干预脚本

-p TESTPARAMETER 可测试参数
--skip=SKIP 跳过给定参数的测试
--skip-static 跳过不是动态参数的测试
--param-exclude=.. 使用正则表达式从测试中排除参数(例如“ses”)
--dbms=DBMS 将后端 DBMS 强制为此值
--dbms-cred=DBMS.. DBMS认证凭证 (user:password)
--os=OS 将后端DBMS操作系统强制为此值
--invalid-bignum 使用大数字使值无效
--invalid-logical 使用逻辑操作使值无效
--invalid-string 使用随机字符串使值无效
--no-cast 关闭载荷casting机制
--no-escape 关闭字符串转义机制
--prefix=PREFIX 注入载荷的前缀字符串
--suffix=SUFFIX 注入载荷的后缀字符串
--tamper=TAMPER 使用给定的脚本来干预注入的数据

Detection(检测):
这些选项可用于自定义检测阶段

--level=LEVEL 执行测试级别 (1-5, 默认 1)
--risk=RISK 执行测试的风险 (1-3, 默认 1)
--string=STRING 当查询求值为True时匹配的字符串
--not-string=NOT.. 当查询求值为False时匹配的字符串
--regexp=REGEXP 当查询求值为True时匹配的正则表达式
--code=CODE 当查询求值为True时匹配的HTTP代码
--text-only 仅根据文字内容比较网页
--titles 仅根据其标题比较网页

Techniques(技术):
这些选项可用于调整特定SQL注入技术的测试

--technique=TECH SQL注入技术使用(默认“BEUSTQ”)
--time-sec=TIMESEC DBMS响应的延迟时间(默认为5秒)
--union-cols=UCOLS 定列范围用于测试UNION查询注入
--union-char=UCHAR 用于暴力猜解列数的字符
--union-from=UFROM 要在UNION查询SQL注入的FROM部分使用的表
--dns-domain=DNS.. 用于DNS外发攻击的域名
--second-order=S.. 产生的网页网址搜索二级响应

Fingerprint(指纹):
-f, --fingerprint 执行扩展的DBMS版本指纹

Enumeration(枚举):
这些选项可用于枚举后端数据库
管理系统信息,表中包含的结构和数据。 此外,您可以运行您自己的SQL语句

-a, --all 检索所有
-b, --banner 检索 DBMS banner
--current-user 检索 DBMS 当前用户
--current-db 检索 DBMS 当前数据库
--hostname 检索 DBMS 服务器 hostname
--is-dba 检测 DBMS 当前用户是否为DBA
--users 枚举 DBMS 用户
--passwords 枚举 DBMS 用户密码散列
--privileges 枚举 DBMS 用户权限
--roles 枚举 DBMS 用户角色
--dbs 枚举 DBMS 数据库
--tables 枚举 DBMS 数据库表
--columns 枚举 DBMS 数据库表列
--schema 枚举 DBMS schema
--count 检索表的条目数
--dump 导出 DBMS 数据库表条目
--dump-all 导出所有 DBMS 数据库表条目
--search 搜索列,表,数据库名称
--comments 检索 DBMS 注释
-D DB DBMS 数据库进行枚举
-T TBL DBMS 数据库表进行枚举
-C COL DBMS 数据库表列进行枚举
-X EXCLUDECOL DBMS 数据库表列不进行枚举
-U USER DBMS 用户进行枚举
--exclude-sysdbs 枚举表时排除DBMS系统数据库
--pivot-column=P.. 数据透视列名称
--where=DUMPWHERE 表导出时使用 WHERE 条件
--start=LIMITSTART 查询要检索的输出条目开始数
--stop=LIMITSTOP 查询要检索的输出条目结束数
--first=FIRSTCHAR 查询从某个字符检索开始
--last=LASTCHAR 查询从某个字符检索结束
--sql-query=QUERY 执行的 SQL 语句
--sql-shell 提示交互式SQL Shell
--sql-file=SQLFILE 从给定文件执行SQL语句

Brute force(强力):
这些选项可用于运行强力检查

--common-tables 检查公用表的存在
--common-columns 检查公共列的存在

User-defined function injection(用户定义的函数注入):
这些选项可用于创建用户定义的函数

--udf-inject 注入用户定义函数
--shared-lib=SHLIB 共享库的本地路径

File system access(文件系统访问):
这些选项可用于访问后端数据库管理系统底层文件系统

--file-read=RFILE 从后端 DBMS 文件系统读取文件
--file-write=WFILE 在后端 DBMS 文件系统上写入本地文件
--file-dest=DFILE 写入后端DBMS绝对文件路径

Operating system access(操作系统访问):
这些选项可用于访问后端数据库管理系统底层操作系统

--os-cmd=OSCMD 执行操作系统命令
--os-shell 提示交互式操作系统shell
--os-pwn 提示OOB shell,Meterpreter或VNC
--os-smbrelay 一个OOB shell,Meterpreter或VNC的单击提示
--os-bof 存储过程缓冲区溢出利用
--priv-esc 数据库处理用户权限升级
--msf-path=MSFPATH 安装 Metasploit 框架的本地路径
--tmp-path=TMPPATH 远程临时目录的绝对路径

Windows registry access(Windows 注册表访问):
这些选项可用于访问后端数据库管理系统Windows注册表

--reg-read 读取Windows注册表项值
--reg-add 写入Windows注册表项值数据
--reg-del 删除Windows注册表项值数据
--reg-key=REGKEY Windows注册表项
--reg-value=REGVAL Windows注册表项值
--reg-data=REGDATA Windows注册表项值数据
--reg-type=REGTYPE Windows注册表项值类型

General(常规):
这些选项可用于设置一些常规工作参数

-s SESSIONFILE 从存储(.sqlite)文件加载会话
-t TRAFFICFILE 将所有HTTP流量记录到文本文件中
--batch 不询问用户,使用默认行为
--binary-fields=.. 具有二进制值的结果字段(例如 "digest")
--charset=CHARSET 强制使用用于数据检索的字符编码
--crawl=CRAWLDEPTH 从目标网址开始抓取网站
--crawl-exclude=.. 使用正则表达式排除抓取的网站 (例如 "logout")
--csv-del=CSVDEL 分隔CSV输出中使用的字符 (default ",")
--dump-format=DU.. 导出数据的格式 (CSV (默认), HTML or SQLITE)
--eta 显示每个输出的预计时间
--flush-session 刷新当前目标的会话文件
--forms 在目标网址上解析和测试表单
--fresh-queries 忽略存储在会话文件中的查询结果
--hex 使用DBMS hex函数进行数据检索
--output-dir=OUT.. 自定义输出目录路径
--parse-errors 解析和显示响应中的DBMS错误消息
--save=SAVECONFIG 将选项保存到配置INI文件
--scope=SCOPE 正则表达式过滤从提供的代理日志的目标
--test-filter=TE.. 根据载荷或标题选择测试 (例如 ROW)
--test-skip=TEST.. 根据载荷或标题跳过测试 (例如 BENCHMARK)
--update 更新 sqlmap

Miscellaneous(其他):
-z MNEMONICS 使用简语 (例如 "flu,bat,ban,tec=EU")
--alert=ALERT 在找到 SQL 注入时运行主机操作系统命令
--answers=ANSWERS 设置问题答案 (例如 "quit=N,follow=N")
--beep 在找到 SQL 注入时询问
--cleanup 从 sqlmap 特定的 UDF 和表清理 DBMS
--dependencies 检查是否缺少(非核心)sqlmap依赖关系
--disable-coloring 禁用控制台输出着色
--gpage=GOOGLEPAGE 使用特定页码的Google dork结果
--identify-waf 对 WAF/IPS/IDS 保护进行全面测试
--mobile 通过HTTP User-Agent标头模仿智能手机
--offline 在离线模式下工作(仅使用会话数据)
--purge-output 安全地从输出目录中删除所有内容
--skip-waf 跳过启发式检测 WAF/IPS/IDS 保护
--smart 只有在正启发式时才进行彻底测试
--sqlmap-shell 提示交互式sqlmap shell
--tmp-dir=TMPDIR 用于导出临时文件的本地目录
--wizard 为初学者用户提供简单的向导界面

参考

0%