SQLMAP使用手册

前言

sqlmap是sql注入中使用的神器,也是渗透测试人员必须掌握的工具。因为最近在学习sql注入的专题,所以写下笔记来记录学习。

sqlmap使用

选项

1
2
3
4
-h, --help 显示基本帮助信息
-hh 显示高级帮助信息
--version 显示程序版本号
-v VERBOSE  赘言级别:0-6(默认 1)

目标

1
2
3
4
5
6
7
-d DIRECT 直接连接到数据库
-u URL, --url=URL 目标URL(e.g. "www.target.com/vuln.php?id=1")
-l LOGFILE 从Burp 或 WebScarab 日志中解析目标
-m BULKFILE 在给定的文本文件中读取多个扫描目标
-g GOOGLEDORK  将Google dork 结果作为目标URL
-r REQUESTFILE  从文件中读取HTTP 请求
-c CONFIGFILE 从INI 配置文件中读取配置选项

请求

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
--data=DATA 通过POST 方法提交的数据字符串
--param-del=PDEL 用于分割参数值的字符
--cookie=COOKIE HTTP Cookie 头
--cookie-del=CDEL 用于分割cookie 值的字符
--load-cookies=L.. 包含cookies 的Netscape/wget 格式文件
--drop-set-cookie 忽略响应中的Set-Cookie 头
--user-agent=AGENT  HTTP User-Agent 头
--random-agent 使用随机选择的HTTP User-Agent 头
--host=HOST HTTP Host 头
--referer=REFERER HTTP Referer 头
--headers=HEADERS Extra 头(e.g. "Accept-Language: fr\nETag: 123")
--auth-type=AUTH.. HTTP 认证方式(Basic, Digest, NTLM 或 PKI)
--auth-cred=AUTH.. HTTP 认证证书(name:password)
--auth-private=A.. HTTP 认证PEM 私钥文件
--proxy=PROXY 使用代理连接目标URL
--proxy-cred=PRO.. 代理认证证书(name:password)
--proxy-file=PRO.. 从文件读取代理列表
--ignore-proxy 接受系统默认代理设置
--tor 使用Tor 匿名网络
--tor-port=TORPORT 设置默认以外的Tor 代理端口
--tor-type=TORTYPE 设置 Tor 代理方式(HTTP( 默认), SOCKS4 或SOCKS5)
--check-tor 检查Tor 是否正确使用
--delay=DELAY 每个HTTP 请求之间延迟的秒数
--timeout=TIMEOUT 认定连接超时的秒数(默认 30)
--retries=RETRIES 超时重试的次数(默认 3)
--randomize=RPARAM 随机改变给定参数的值
--safe-url=SAFURL 设置一个安全链接供系统经常访问
--safe-freq=SAFREQ 设置一个安全连接供系统在两次测试之间访问
--skip-urlencode 不对攻击载荷数据进行URL 编码
--force-ssl   强制使用SSL/HTTPS
--hpp 使用HTTP 参数污染
--eval=EVALCODE 供提交请求之前评估参数的 Python 代码(e.g. "import hashlib;id2=hashlib.md5(id).hexdigest()")

优化

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

注入

1
2
3
4
5
6
7
8
9
10
11
12
13
-p TESTPARAMETER 测试参数
--skip=SKIP  跳过对给定参数的测试
--dbms=DBMS  在这里强制指定后端DBMS
--dbms-cred=DBMS.. DBMS 认证证书(user:password)
--os=OS  在这里强制后端DBMS 操作系统
--invalid-bignum 使用大数字无效化值
--invalid-logical 使用逻辑运算无效化值
--invalid-string 使用随机字符串无效化值
--no-cast  关闭攻击载荷铸造机制
--no-escape 关闭字符串逃逸机制
--prefix=PREFIX 注入攻击载荷前缀字符串
--suffix=SUFFIX 注入攻击载荷后缀字符串
--tamper=TAMPER  使用给定的脚本篡改注入数据

检测

1
2
3
4
5
6
7
8
--level=LEVEL 执行测试的等级(1-5, 默认 1)
--risk=RISK 执行测试的风险(0-3, 默认 1)
--string=STRING 查询被评估为True 时的匹配字符串
--not-string=NOT.. 查询被评估为False 时的匹配字符串
--regexp=REGEXP 查询被评估为True 时的正则表达式
--code=CODE 查询被评估为True 时的HTTP 代码
--text-only 仅基于文本内容比较网页
--titles 仅基于标题比较网页

技术

1
2
3
4
5
6
7
--technique=TECH 使用的SQL 注入技术(默认使用所有技术)
--time-sec=TIMESEC DBMS 响应的延迟秒数(默认 5)
--union-cols=UCOLS UNION 查询注入测试字段的范围
--union-char=UCHAR 暴破字段数量使用的字符
--union-from=UFROM UNION 查询注入FROM 部分使用的数据表
--dns-domain=DNS.. DNS 溢出攻击所使用的域名
--second-order=S.. 二阶响应页面URL

指纹

1
-f, --fingerprint  检查 DBMS 版本指纹

枚举

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
-a, --all 检索一切
-b, --banner 检索DBMS banner 信息
--current-user 检索DBMS 当前用户
--current-db 检索DBMS 当前数据库
--hostname  检索DBMS 服务器主机名
--is-dba 检测当前用户是否是DBA
--users 枚举DBMS 用户名
--passwords  枚举DBMS 用户密码哈希
--privileges 枚举DBMS 用户权限
--roles  枚举DBMS 用户角色
--dbs 枚举DBMS 数据库
--tables 枚举DBMS 数据库表
--columns 枚举DBMS 数据库表字段
--schema 枚举DBMS 架构
--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 系统库
--where=DUMPWHERE 转储数据表时使用WHERE 条件
--start=LIMITSTART 第一个查询的输出项检索
--stop=LIMITSTOP 最后一个查询的输出项检索
--first=FIRSTCHAR 第一个查询的输出字的字符检索
--last=LASTCHAR 最后一个查询的输出字的字符检索
--sql-query=QUERY 要执行的SQL 语句
--sql-shell  返回交互式的SQL shell
--sql-file=SQLFILE 从给定的文件执行SQL 语句

强制爆破

1
2
3
4
--common-tables 检查是否存在常见表
--common-columns 检查是否存在常见字段用户定义函数注入:
--udf-inject 注入用户自定义函数
--shared-lib=SHLIB 共享库的本地路径

文件系统访问

1
2
3
--file-read=RFILE 从后端DBMS 文件系统读取文件
--file-write=WFILE 向后端DBMS 文件系统写入本地文件
--file-dest=DFILE 向后端DBMS 文件系统写入文件的绝对路径

操作系统访问

1
2
3
4
5
6
7
8
--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 Framework 本地路径
--tmp-path=TMPPATH 远程临时文件目录的绝对路径

Windows注册表访问

1
2
3
4
5
6
7
--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 注册表键值类型

常规

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
-s SESSIONFILE  从存储(.sqlite)文件中读取会话

-t TRAFFICFILE 记录所有HTTP 流量为一个文本文件

--batch                 从不询问用户输入,  使用默认行为

--charset=CHARSET 强制数据检索使用的字符编码

--crawl=CRAWLDEPTH  从目标URL 抓取起始网页

--csv-del=CSVDEL CSV 输出中使用的定界符(默认",")

--dump-format=DU.. 转储数据的格式(CSV(默认), 可以设置为HTML

或SQLITE)

--eta 显示每个输出的预计到达时间
--flush-session 刷新当前目标的会话文件
--forms   分析并测试目标URL 中的表单
--fresh-queries 忽略在会话文件中存储的查询结果
--hex 对数据检索使用DBMS 的hex 函数
--output-dir=OUT.. 自定义输出目录路径
--parse-errors 从响应中分析并显示DBMS 错误消息
--pivot-column=P.. 透视字段
--save 保存选项到INI 配置文件
--scope=SCOPE 用正则表达式从所提供的代理日志过滤目标
--test-filter=TE.. 通过攻击载荷和(或)标题选择测试(e.g. ROW)
--update 更新sqlmap

杂项

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
-z MNEMONICS 使用短记忆法(e.g. "flu,bat,ban,tec=EU")
--alert=ALERT 当找到 SQL 注入时运行操作系统命令
--answers=ANSWERS 设置问题的答案(e.g. "quit=N,follow=N")
--beep 当找到SQL 注入时发出蜂鸣
--check-waf 启发式检查 WAF/IPS/IDS 保护
--cleanup 从sqlmap 具体UDF 和表清理DBMS
--dependencies 检查是否缺少(非核心)的sqlmap 的依赖
--disable-coloring 禁用控制台输出着色
--gpage=GOOGLEPAGE 从指定页码使用Google dork 结果
--identify-waf 使测试通过 WAF/IPS/IDS 保护
--mobile 通过HTTP User-Agent 头模拟智能手机
--page-rank 为Google dork 结果显示网页排名(PR)
--purge-output 从输出目录中安全删除所有内容
--smart 仅通过积极的启发式进行测试
--wizard 用于初级用户的简单向导接口

参考:
sqlmap参考手册

结束

对于sqlmap的学习,其实不用死记硬背其中的参数,用到的时候查就行。
这学期学安全的时间到此结束了,开始准备期末了,寒假再见了~~

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×