二十四、SQLMap自动注入-(3)REQUEST类

目录

  1. 数据段--data选项
  2. 变量分隔符选项 --param-del
  3. cookie头选项 --cookie
  4. 选项--user-agent
  5. 选项--random-agent
  6. 检测user-agent注入点
  7. host头选项 --host
  8. Referer头选项 --referer
  9. 额外的header选项 --headers
  10. 额外的header选项 --headers
  11. 基于HTTP协议的身份认证
  12. 客户端认证选项--auth-cert/--auth-file
  13. http(s)代理
  14. http(s)代理
  15. --timeout选项
  16. --timeout选项
  17. randomize
  18. --scope选项
  19. --scope选项
  20. --skip-urlencode选项
  21. --eval选项

1、数据段--data选项

  • get / post 都适用
#sqlmap -u "http://1.1.1.1/a.php" --data="user=1&pass=2" -f //将get或post中的数据段以data传入

首先,使用F12,调用调试器,然后点击“启用”


设置浏览器抓包

首先复制抓包后的链接:


复制链接

然后将其post提交的数据已--data
选择post数据
#sqlmap -u "http://192.168.50.183/mutillidae/index.php?page=login.php" --data "username=1&password=2&login-php-submit-button=Login" --dbs

上述是post方法,下面是将get方法进行提交、拆分

sqlmap -u "http://192.168.50.183/mutillidae/index.php" --data="page=user-info.php&username=1&password=1&user-info-php-submit-button=View+Account+Details" -p username --users

2、变量分隔符选项 --param-del

sqlmap -u "http://1.1.1.1/a.php" --data="q=foo;id=1" --param-del=";" -f
用分号;作为分隔符,之前是使用&

3、cookie头选项 --cookie

  • 使用cookie作为登录标识,即需要先正常登录后,在进行相关的访问的,在探测时需要使用--cookie:
  • web应用需要机遇cookie的身份认证
  • 检查cookie中的注入点(sqlmap自动测试,cookie字段中的变量存在的注入点检测,在设置level≥2的时候)
  • Set-Cookie / --drop-set-cookie(当服务器响应新的cookie时,不更新,仍使用原有cookie) / --cookie-del

访问dvwa的的盲注页面:


dvwa盲注页面

复制cookie数据:

cookie信息

使用sqlmap进行sql探测

#sqlmap -u "http://192.168.1.183/dvwa/vulnerabilities/sqli_blind/?id=2&Submit=Submit#" --cookie="security=low;PHPSESSID=db6d77a898092583a30086fd7a6c1823" --dbs
//在登录后需要使用cookie认证的探测
 #sqlmap -u "http://192.168.1.183/dvwa/vulnerabilities/sqli_blind/?id=2&Submit=Submit#" --cookie="security=low;PHPSESSID=db6d77a898092583a30086fd7a6c1823" --level2 --dbs
//设置level为2,最大值可设置为5,还可以继续探测到cookie中变量是否存在注入

4、选项--user-agent

sqlmap在发送扫描探测的时候,默认使用的user-agent为sqlmap/1.0-xxxx(http://sqlmap.org)的字符串。

通过wireshark查看默认下sqlmap的user-agent,首先仍使用上述sqlmap语句进行探测,同时打开wireshark,过滤为目标IP地址,并观察tcpstream流


sqlmap探测
查看tcp流

sqlmap默认的useragent

可以通过使用--user-agent=“xxx”进行修改,也可以通过下面的--random-agent修改

5、选项--random-agent

/usr/share/sqlmap/txt/user-agents.txt中,有已经写好的user-agent,可以使用--random-agent在其txt中随机使用一个作为user-agent。

#sqlmap -u "http://192.168.1.183/dvwa/vulnerabilities/sqli_blind/?id=2&Submit=Submit#" --cookie="security=low;PHPSESSID=db6d77a898092583a30086fd7a6c1823" --dbs --random-agent

使用wireshark抓包,查看tcp流,选取了txt中的firefox作为useragent


--random-agent修改useragent

6、检测user-agent注入点

sqlmap检查user-agent中的注入点:level≥3
APP/WAF/IPS/IDS过滤异常user-agent时,如果有如下报错,是因为useragent被服务端识别,下面报错中提示sqlmap使用--random-agent产生user-agent:

[hh:mm:20] [ERROR] the target URL responded with an unknown HTTP status code, try to force the HTTP User-Agent header with option --useragent or --random-agent

7、host头选项 --host

设置level≥5,即最高级别才会检查host头是否存在注入

--host="xxxx"

8、Referer头选项 --referer

lever≥3

--referer="xxx"

9、额外的header选项 --headers

设置header中的属性信息,改为自己想要发送的header

sqlmap -u "http://192.168.50.183/dvwa/vulnerabilities/sqli_blind/?id=2&Submit=Submit#" --cookie="security=low; PHPSESSID=d9994fc98d59c687c8b7af790bd56da2" --dbs --headers="Host:www.aaa.com\nUser-Agent:bbbbb"
// \n表示换行符,每个头使用单独的一行,因此需要\n

通过wireshark可以查看修改后的Host和User-Agent

wireshark抓包

10、选项 --method=POST/GET

--method=POST/GET    //使用GET或者POST方法探测

11、基于HTTP协议的身份认证

  • HTTP
  • Basic
  • Digest
  • NTLM
# sqlmap. -u "http://1.1.1.1/a.php?id=1" --auth-type Basic --auth-cred
"user:pass“   //--auth-tyep指定认证类型,user:pass表示用户名和密码

12、客户端认证选项--auth-cert/--auth-file

关于证书,除了认证服务端之外,服务端也认证客户端这种双向认证的场景

--auth-file="ca.PEM"
  • 仅支持含有私钥的PEM格式证书文件
  • 或者是PEM格式的证书链文件

13、http(s)代理

在sqlmap进行探测的过程中,为避免被服务端发现、对IP地址进行限制,可以采取使用代理的方式探测

--proxy="http://127.0.0.1:8080"
--proxy-cred="name:pass" //访问搭理需要用户名、密码的情况下加上此选项
--ignore-proxy  //忽略系统级代理设置(一般的代理是通过浏览器代理),通常用于扫描本地网络目标

14、--delay选项

每次http(s)请求之间延迟时间,单位为秒,可以是浮点数,如1.5s也可以,默认无延迟。此项避免服务端发现注入攻击,每个一段时间发送探测。

15、--timeout选项

请求超时时间,浮点数,默认为30s,在多长时间没有接收到服务器的响应时间

16、--retries选项

http(s)连接超时重试次数,默认3次,连续超过3个timeout即不在发送请求。

17、randomize

长度、类型与原始值保持一致的前提下,指定每次请求随机取值的参数名

#sqlmap -u "http://1.1.1.1/a.php?id=100 --randomize="id"
//每次id的值从100到999,id为的长度等保持不变

18、 --scope选项

过滤日志内容,通过政治表达式筛选扫描对象

sqlmap -l burp.log --scope="(www)?\.target\.(com|net|org)"
sqlmap -l 2.log --scope="(19)?\.168\.20\.(1|10|100)"  --level 3 --dbs

19、--safe-url / --safe-freq选项

  • 检测和盲注阶段会产生大量失败请求,服务器端可能因此销毁session
  • 每发送--safe-freq次注入请求后,发送一次正常请求
--safe-url  // 每次需要探测的url地址
--safe-freq  //频次,每次多少次请求后,发送正常请求

20、--skip-urlencode选项

默认Get方法会对传输内容进行编码,某些web服务器不遵守RFC编码标准,使用原始字符提交数据
直接在命令行后添加选项 --skip-urlencode

21、--eval选项

每次请求前执行指定的python代码
每次请求更改或增加新的参数值(时间依赖、其他参数数值依赖)

#sqlmap -u "http://1.1.1.1/a.php?
id=1&hash=c4ca4238a0b923820dcc509a6f75849b" --eval="import
hashlib;hash=hashlib.md5(id).hexdigest()"
//hash值依赖于前面的id信息,每次id变化的话,hash也要随之变化,此时需要--eval选项,通过python脚本实现每次id和对应的hash一致
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • http://192.168.136.131/sqlmap/mysql/get_int.php?id=1 当给sq...
    xuningbo阅读 10,428评论 2 22
  • sqlmap用户手册 说明:本文为转载,对原文中一些明显的拼写错误进行修正,并标注对自己有用的信息。 ======...
    wind_飘阅读 2,098评论 0 5
  • sqlmap也是渗透中常用的一个注入工具,其实在注入工具方面,一个sqlmap就足够用了,只要你用的熟,秒杀各种工...
    linkally阅读 6,945评论 1 40
  • SQLMAP作用 判断可注入的参数 判断可以用哪种SQL注入技术来注入 识别出哪种数据库 根据用户选择,读取哪些数...
    陆洒脱阅读 3,741评论 1 4
  • sqlmap也是渗透中常用的一个注入工具,其实在注入工具方面,一个sqlmap就足够用了,只要你用的熟,秒杀各种工...
    查无此人asdasd阅读 1,572评论 0 1