Sqlmap学习笔记(二)

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

  1. 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"
    
  2. 也可以通过随机生成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
  1. 对cookie进行注入。保存http请求头信息到文件,通过sqlmap -r 文件名来完成对HTTP请求头信息的注入,如果需要对Cookie进行注入,则需要将level设置成2或以上

    sqlmap -r 文件 --level=2
    
  2. Sqlmap通过User-Agent进行注入。如果sqlmap需要对User-Agent进行注入,需要将level设置成3或以上

    sqlmap -r 文件 --level=3
    
  3. Sqlmap通过HOST注入。需要将level设置成5,5是最高扫描深度,会对所有HTTP头请求参数进行扫描,如Cookie、User-Agent、Referer..等

    sqlmap -r 文件 --level=5
    
    
  4. Sqlmap对Referer进行注入,需要将level设置成3或以上

    sqlmap -r 文件 --level=3
    
    

为HTTP请求设置额外的头信息

  1. 通过设置--headers指定额外的头信息或修改已有的头信息,以下命令修改User-Agent为”dagger“,并添加了一个“New Header”头参数,“ ”作为多个HTTP头参数的分隔符

    sqlmap -r 文件 --headers="User-Agent: dagger
    New Header: New Header Value"
    
    
  2. -H和--header指定单个HTTP头参数,--headers可以一次指定多个HTTP头参数

  3. 也可以通过设置sqlmap.conf配置文件下的[Request]配置完成对HTTP请求头参数的修改

设置HTTP协议认证参数

  1. 访问目标站点时,如果弹出以下对话框,这表明需要通过HTTP认证才能继续访问

    image-20191203215946994

  2. 通过--auth-type指定认证类型,--auth-type支持的类型:Basic、Digest、NTLM

  3. 通过--auth-cred设置认证需要的用户名和密码,语法为username:password

    sqlmap -u "http://test.dvwa.com/vulnerabilities/sqli/?id=1&Submit=Submit#" --auth-type="Basic" --auth-cred="username:password"
    
    

设置代理扫描URL

  1. 去网上找几个免费的代理IP,https://www.kuaidaili.com/free/

  2. 通过--proxy指定代理IP扫描目标URL

    sqlmap -u "http://test.dvwa.com/vulnerabilities/sqli/?id=1&Submit=Submit#" --proxy="http://182.105.15.143:9000" --banner
    
    
  3. 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的类型,支持HTTPHTTPSSOCKS4SOCKS5四种类型

--check-tor:测试sqlmap中的tor是否可用

  1. Ubuntu安装tor

    apt install tor
    
    
  2. 开启tor服务

    service tor start
    
    
  3. 查看tor运行状态

    service tor status
    
    

    说明已开启tor服务

    image-20191203222144461

  4. 匿名访问目标站点

    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设置随机化参数

  1. 通过--randomize为指定参数的每次请求设置一个随机值

    sqlmap -u "http://test.dvwa.com/sqli/Less-1?id=1" --randomize=id --banner
    
    
  2. 通过wireshark抓包可以看到,每次的请求id都会随机变化

    image-20191203224106189

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

原文地址:https://www.cnblogs.com/dagger9527/p/11974272.html