提交数据段 –data
-
get / post 都适用
sqlmap.py -u "http://192.168.0.119/mutillidae/index.php?page=login.php" --data="username=1&password=1&login-php-submit-button=Login" --dbs
#-u后面跟URL
#--data后面跟用户请求的数据
变量分隔符:–param-del
-
一般情况下,网站会用&作为参数的分隔符,这也是SQLMAP默认使用的分隔符,如果有些web application不使用&作为分隔符的话,那么就使用–param-del去告诉sqlmap分隔符是什么。
sqlmap -u "http://1.1.1.1/a.php" --data="q=foo;id=1" --param-del=";" -f
cookie值
-
大部分网站需要使用cookie值来代表用户的合法性访问,这些网站如果使用sqlmap去扫描的的话,不带cookie值的情况下是扫不到的,使用–cookie后面跟cookie的值,比如我们之前使用的dvwa就是的
./sqlmap.py -u "http://192.168.0.119/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie="security=low;PHPSESSID=4bef239e9c2df754baddf5dce105d666" --dbs
–user-agent
-
当你用sqlmap对一个网站进行扫描的时候,可以通过抓包看到,那么他就可以通过过滤的一些手段进行阻断
--user-agent #手动指定用户agent
--random-agent #使用kali自带字典的形式随意挑选
#kali自带字典:
/usr/share/sqlmap/data/txt/user-agents.txt
-
sqlmap检查user-agent中的注入点:Level>=3
-
APP/IDS/IPS/WAF会过滤异常user-agent报错
Host头:–host
-
sqlmap检查host中的注入点:Level=5
Referer头:–referer
-
sqlmap检查Referer头中的注入点:Level>=3
额外的header:–headers
-
每个头单独一行(名称区别大小写),可以使用\n进行换行
-
指定请求方法
–method=POST/GET
基于HTTP协议的身份验证
-
Basic基本身份认证
-
Digest
-
NTLM
–auth-type Basic
–auth-cert / –auth-file
-
含有私钥的PEM格式证书文件
-
PEM格式的证书链文件
HTTP(S)代理
–proxy=”http://127.0.0.1:8087″
–proxy-cred=”name:pass”
–ignore-proxy #忽略系统代理设置,通常用于扫描本地网络目标
–delay
-
每次http(s)请求之间延迟时间,浮点数,单位为秒,默认无延迟
–timeout
-
请求超时时间,浮点数,默认为30秒
–retries
-
http(s)连接尝试重试次数,默认3次
–randomize
-
长度,类型与原始值保持一致的前提下,指定每次请求随机取值的参数名(例如对id=1,随机产生123455)
–scope
-
过滤日志内容,通过正则表达式筛选扫描对象
sqlmap -l burp,log --scope="(www)?\.target\.(com|net|org)"
//按照www.target.com|net|org筛选
//或者按照数字筛选
sqlmap -l 2.log --scope="(19)?\.168\.20\.(1|10|100)" --level 3 --dbs
//可以扫描User-agent中的注入点
–safe-url / –safe-freq
-
检测和盲注阶段会产生大量失败请求,服务器端可能因此销毁session
-
每发送–safe-freq次注入请求后,发送一次正常请求
–skip-urlencode
-
默认Get方法会对传输内容进行编码,某些WEB服务器不遵守RFC标准编码,使用原始字符提交数据;
–eval
-
每次请求前执行指定的python代码
-
每次请求更改或增加新的参数值(时间依赖,其他参数值依赖)
sqlmap -u "http:1.1.1.1/a.php?id=1&hash=c4ca4238a0b923820dcc590a6f58417b" --eval="import hashlib;hash=hashlib.md5(id).hexdigest()"
没有回复内容