SQLMap自动注入-Request
基本数据
- 数据段: –data
- get/post都使用
- sqlmap -u “http://1.1.1.1/a.php” –data=”user=1&pass=2”-f
- 变量分隔符:–param-del
- http://1.1.1.1/a.php?q=foo;id=1 //用;替换&
- sqlmap -u “http://1.1.1.1/a.php" –data=”q=foo;id=1” –param-del=”;” -f
- cookie头:–cookie
- web应用需要基于cookie的身份认证
- 检查cookie中的注入点(sqlmap自动测试,当扫描level>=2时才会检查,–level 2)
- Set-Cookie(sqlmap会自动检测,使用新的cookie)/–drop-set-cookie(drop掉,还使用原来的cookie)
- sqlmap -u “xxx” –cookie=”key1=1;key2=2”
- –user-agent
- sqlmap检查user-agent中的注入点需要level>=3
- –random-agent
- /usr/share/sqlmap/txt/user-agents.txt,字典中随机抽取
- Host头:–host=“xxx”
- level=5
- referer头:–referrer
- level>=3
- 额外的header:–headers=”Host:xxxxx\nUser=Agent:xxxxxxxxxxx\nxxxx:xxx”
- 注意用换行符分隔。注意大小写。
- –method=GET/POST
基于http协议的身份验证
- Basic
- Digest
- NTLM
- sqlmap -u “http://1.1.1.1/a.php?id=1" –auth-type Basic –auth-cred “user:pass”
- –auth-cert/–auth-file
- –auth-file=”ca.PEM”
- 含有私钥的PEM格式证书文件
- PEM格式的证书链文件
http(s)代理
- –proxy=”http://127.0.0.1:8087"
- –proxy-cerd=”user:pass”
- –ignore-proxy
- 忽略系统代理,通常用于扫描本地网络目标。
请求控制
–delay
- 每次http(s)请求之间延迟时间,浮点数,单位为秒,默认无延迟
–timeout
- 请求超时时间,浮点数,默认为30秒
–retries
- http(s)连接超时重试次数,默认三次
–randomize
长度、类型与原始值保持一致前提下,指定每次请求随机取值的参数名
sqlmap -u http://1.1.1.1/a.php?id=100 -randomize=”id”
–scope
- 过滤日志内容,通过正则表达式筛选扫描对象
- sqlmap -l burp.log –scope=”(www)?.target.(com|net|org)”
- sqlmap -l 2.log –scope
–safe-url/–safe-freq
- 检测和盲注截断会产生大量失败请求,服务器端可能因此销毁session
- 每发送–safe-freq次诸如请求后,发送一次正常请求
–skip-urlencode
- 默认get方法会对传输内容进行编码,但是有些web服务器不遵守rfc标准,使用原始字符。
–eval
- sqlmap -u “http://1.1.1.1/a.php?id=1&hash=c1515a15b1dd15xxx" –eval=”import hashlib;hash=hashlib.md5(id).hexdigest()”
SQLMap自动注入-Optimization
- 优化性能
- –predict-output
- 根据检测方法,对比返回值和统计表内容,不断缩小检测范围(数据库类型版本等),提高检测效率
- 通过 版本名、用户名、密码、Privileges、role、数据库名称、表名、列名等判断
- 与–threads参数不兼容
- 统计表:/usr/share/sqlmap/txt/common-outputs.txt
- –keep-alive
- 使用http(s)长连接,性能好
- 与–proxy参数不兼容
- 避免重复建立网络连接的开销,但大量长连接会严重占用服务器资源
- –null-connection
- 只获取相应页面的大小,而不是具体内容
- 通常用于盲注判断 真/假,降低网络带宽消耗。比如页面会回传图片
- 与–text-only参数不兼容(基于页面内容比较判断真/假)
- 若是HTTP响应体中有许多诸如JavaScript之类的活动内容,可以使用参数“–text-only”让Sqlmap只专注于纯文本内容。
- –threads
- 最大并发线程
- 盲注时每个线程获取一个字符(7次请求,因为第一位是0,高位ascii码键盘上没有),获取完成后线程结束
- 默认值为1,建议不要超过10,否则可能影响站点可用性
- 与–predict-output参数不兼容
- -o 开启前三个性能参数(除–threads参数)