一、SQLMap的介绍
1.SQLMap 是一个开源的SQL注入工具,可以用来进行自动化检测,甚至可以利用 SQL 注入漏洞直接获取目标数据库服务器的权限。它具有功能强大的检测引擎,针对各种不同类型数据库的渗透测试的功能选项,包括获取数据库中存储的数据,访问操作系统文件甚至可以通过外带数据连接的方式执行操作系统命令。
2.支持的数据库:MySQL, Oracle, PostgreSQL, Microsoft SQL Server, MicrosoftAccess,IBM DB2, SQLite, Firebird, Sybase and SAP MAXDB。
二、SQLMap 五种注入方式
- 联合注入
- 报错注入
- 布尔盲注
- 时间盲注
- 堆叠注入
三、SQLMap的重要参数
1.参数:-u /
格式:sqlmap -u "目标网站的url "
sqlmap -u "http://192.168.1.5/sqlilabs/Less-1/?id=1" id为网站服务器的IP地址
结果截图:
2.参数-m
格式:sqlmap -m 文件名
sqlmap -m 1.txt
会从文件中依次执行url,一行只能写一个url
2.参数:-r
表示从文件中加载http请求,将请求数据包放到文件中
sqlmap -r 2.txt
4.设置回显等级
参数-v 默认为1
0:只回显Python错误信息
1:同时回显基本信息和警告信息
2:同时回显debug信息
3:同时显示注入的payload
4:同时显示http请求
5:同时显示http响应头
6:同时显示http响应请求
语法:sqlmap -u "http://192.168.1.5/sqlilabs/Less-1/?id=1" -v 3
5.设置探测等级
参数 --level
共有五个等级 默认等级为1,
level>=2 测试http cookie
level>=3 测试http user-agent/referer
level =5 测试 http host
基本格式:root@kali:~/Desktop# sqlmap -r 2.txt --level 2
6.设置http数据包相关参数
参数:--data 把data后边的数据以post方式提交
基本格式:root@kali:~/Desktop# sqlmap -u "http://192.168.1.5/sqlilabs/Less-12/" --data "id=1"
7.参数--cookie 把cookie参数复制添加到--cookie后边
基本格式:sqlmap -u "http://192.168.1.5/DVWA/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie = "Cookie: security=low; PHPSESSID=c799t8hil8934arhoeipuhep54"
8.指定测试参数
-p :sqlmap默认会测试所有的GET和POST参数,当-level的值大于等于2的时候也 会测试HTTP Cookie头的值,当大于等于3的时候也会测试User- Agents HTTP Referer头的值。
9.设置探测风险等级
参数:--risk 共有三个风险等级,
1-3: 默认是1会测试大部分的测试语句,
2会增加基于时间的测试语句,
3会增加OR语句的SQL注入测试。
注意:在有些时候,例如在UPDATE, DELETE的语句中,注入一个OR的测试语句, 可能导致更新的整个表,可能造成很大的风险。
10.列数据
(1)--dbs 查看数据库
操作格式:root@kali:~/Desktop# sqlmap -u "http://192.168.1.5/sqlilabs/Less-7/?id=1" --dbs
(2)--users 查看所有用户 --password 查看所有密码 可以连在一起用
操作格式:root@kali:~/Desktop# sqlmap -u "http://192.168.1.5/sqlilabs/Less-7/?id=1" --dbs --users --password
进入目录:cd /root/.sqlmap/output/192.168.1.5
11.使用shell命令:
参数:--os-shell 反弹交互shell
前提:需要网站的物理路径,其次是需要有FILE读写权限
12.--tamper 绕过注入限制
usqlmap-u"http://url/news?id=1" --tamper "base64encode.py"