#### Sqlmap设置Http请求参数
--cookie:指定cookie信息,用来代理登陆状态,如果站点目标URL需要登陆之后才能访问,那么在使用sqlmap对目标URL进行扫描时需要将登陆后的cookie一并带过去,不然sqlmap的扫描有可能会被重定向到登陆页面,或者没有访问该接口的权限
--method:指定http请求方式,如POST、GET、DELETE、PUT等
--data:POST请求所携带的参数,如果指定了这个选项,那么请求方式默认是POST
--param-del:GET或POST参数默认分隔符,默认是&,如果设置成“;”,那么GET参数格式为
?id=1;name=张三
,
POST请求方式需要通过配合--data选项来设置
--data="id=1;name=张三"
--level: 测试的安全等级(1-5, 默认1),值越大,扫描深度越大
-p:要测试的参数
如要扫描的url为:
http://test.dvwa.com/vulnerabilities/sqli/?id=1&Submit=Submit#
可以只扫描id参数,通过-p指定,多个字段用逗号分隔
sqlmap -u "http://test.dvwa.com/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie="PHPSESSID=rpdbjcqpqmn0gin5uvsospbpvr; security=low" --dbs -p id
自定义User-Agent
- sqlmap的默认user-agent是:
sqlmap/1.0-dev-xxxxxxx..
默认的user-agent容易被服务器识别,通过--user-agent可以设置
sqlmap -u "http://test.dvwa.com/vulnerabilities/sqli/?id=1&Submit=Submit#" --user-agent="Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; de) Opera 8.0"
- 也可以通过随机生成user-agent来访问目标url,通过设置--random-agent打开
sqlmap -u "http://test.dvwa.com/vulnerabilities/sqli/?id=1&Submit=Submit#" --random-agent
设置--random-agent之后,每次请求都将会从sqlmap安装目录的data/txt/user-agents.txt中随机选取一条user-agent来完成请求
Sqlmap通过Http请求头各项参数注入
GET /vulnerabilities/sqli/?id=1&Submit=Submit HTTP/1.1
Host: test.dvwa.com
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3
Referer: http://test.dvwa.com/vulnerabilities/sqli/
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,ja;q=0.7,cy;q=0.6,la;q=0.5
Cookie: PHPSESSID=rpdbjcqpqmn0gin5uvsospbpvr; security=low
- 对cookie进行注入。保存http请求头信息到文件,通过
sqlmap -r 文件名
来完成对HTTP请求头信息的注入,如果需要对Cookie进行注入,则需要将level设置成2或以上
sqlmap -r 文件 --level=2
- Sqlmap通过User-Agent进行注入。如果sqlmap需要对User-Agent进行注入,需要将level设置成3或以上
sqlmap -r 文件 --level=3
- Sqlmap通过HOST注入。需要将level设置成5,5是最高扫描深度,会对所有HTTP头请求参数进行扫描,如Cookie、User-Agent、Referer..等
sqlmap -r 文件 --level=5
- Sqlmap对Referer进行注入,需要将level设置成3或以上
sqlmap -r 文件 --level=3
为HTTP请求设置额外的头信息
- 通过设置--headers指定额外的头信息或修改已有的头信息,以下命令修改User-Agent为”dagger“,并添加了一个“New Header”头参数,“\n”作为多个HTTP头参数的分隔符
sqlmap -r 文件 --headers="User-Agent: dagger\nNew Header: New Header Value"
- -H和--header指定单个HTTP头参数,--headers可以一次指定多个HTTP头参数
- 也可以通过设置sqlmap.conf配置文件下的[Request]配置完成对HTTP请求头参数的修改
设置HTTP协议认证参数
- 访问目标站点时,如果弹出以下对话框,这表明需要通过HTTP认证才能继续访问
- 通过--auth-type指定认证类型,--auth-type支持的类型:Basic、Digest、NTLM
- 通过--auth-cred设置认证需要的用户名和密码,语法为username:password
sqlmap -u "http://test.dvwa.com/vulnerabilities/sqli/?id=1&Submit=Submit#" --auth-type="Basic" --auth-cred="username:password"
设置代理扫描URL
- 去网上找几个免费的代理IP,https://www.kuaidaili.com/free/
- 通过--proxy指定代理IP扫描目标URL
sqlmap -u "http://test.dvwa.com/vulnerabilities/sqli/?id=1&Submit=Submit#" --proxy="http://182.105.15.143:9000" --banner
- Sqlmap中设置代理的参数:--proxy、--proxy-cred、--proxy-file、--ignore-proxy
--proxy-cred:设置代理服务器的认证信息,语法与--auth-cred等同
--proxy-file:从文件中读取多个代理访问目标URL
http://182.105.15.143:9000
http://1.197.10.229:9999
http://120.83.106.239:9999
--ignore-proxy:忽略系统默认的代理设置,针对本地站点的访问时,添加这个参数可以避免使用系统代理访问本地站点
Sqlmap设置Tor隐藏网络
--tor:开启tor连接
--tor-port:指定tor端口
--tor-type:指定tor的类型,支持HTTP、HTTPS、SOCKS4、SOCKS5四种类型
--check-tor:测试sqlmap中的tor是否可用
- Ubuntu安装tor
apt install tor
- 开启tor服务
service tor start
- 查看tor运行状态
service tor status
说明已开启tor服务
- 匿名访问目标站点
sqlmap -u "http://test.dvwa.com/vulnerabilities/sqli/?id=1&Submit=Submit#" --tor --tor-type=HTTPS --banner
Sqlmap设置延迟访问
默认情况下,Sqlmap是不会设置延迟的,如果某些站点对访问频率过快的请求做了限制,那么就很容易检测出这不是正常的连接,有可能会导致被禁止访问
Sqlmap可以通过--delay设置延迟时间,单位是秒
每次访问间隔0.5秒
sqlmap -u "http://test.dvwa.com/vulnerabilities/sqli/?id=1&Submit=Submit#" --delay=0.5
Sqlmap设置超时时间和重试次数
--timeout:设置连接最大等待时间,如果超过了这个时间,这判定本次连接超时,默认30秒
--retries:设置连接失败后的重试次数,默认重试3次
--ignore-timeouts:忽略连接超时时间,那么sqlmap会一直等待,直到连接成功为止
sqlmap超时时间为10秒,若失败后重试3次
sqlmap -u "http://test.dvwa.com/vulnerabilities/sqli/?id=1&Submit=Submit#" --timeout=10 --retries=3
Sqlmap设置随机化参数
- 通过--randomize为指定参数的每次请求设置一个随机值
sqlmap -u "http://test.dvwa.com/sqli/Less-1?id=1" --randomize=id --banner
- 通过wireshark抓包可以看到,每次的请求id都会随机变化
Sqlmap过滤日志
--scope:过滤出指定范围的请求,可以是Python正则表达式
通过-l指定burpsuite请求日志log,过滤出其中指定范围的请求
sqlmap -l burp.log --scope="(www)?\.(.*)\.(com|net|org)"
--skip-urlencode:不进行URL加密,如果服务端不遵循URL加密规则,则可以设置此项
Sqlmap设置忽略401报错
如果测试时偶尔返回HTTP错误401(未经授权的访问),如果想不提供凭证的情况下继续访问,可以使用--ignore-401来忽略这个401错误
Sqlmal访问目标站点需要客户端证书来证明自己的身份时,需要带上--auth-file参数来携带证书请求,应该是一个PEM格式的文件,其中包含证书和密钥
sqlmap -u 目标站点 --auth-file=PEM文件
Sqlmap设置安全模式访问
避免多次请求失败后会话被销毁
--safe-url:目标URL
--safe-post:指定POST参数
--safe-req:读取HTTP请求文件,如Burpsuite请求log
--safe-freq:对应多条--safe-req