请求参数设置
Sqlmap设置HTTP方法
Sqlmap会自动在探测过程中使用适合的HTTP请求方法。但是在某些具体情况下,需要强制使用具体的HTTP请求方法。例如 PUT请求方法。HTTP PUT请求方法不会自动使用,因此需要我们强制指定。使用 --method=PUT。
Sqlmap设置POST提交参数
默认情况下,用于执行HTTP请求的HTTP方法是GET,但是您可以通过提供在POST请求中发送的数据隐式地将其更改为POST。这些数据作为这些参数,被用于SQL注入检测。
首先抓包获取提交数据信息,-f fingerprint 指纹
然后将数据作为sqlmap参数进行探测
python2 sqlmap.py -u “http://192.168.4.4/web/sqli-labs/Less-11/index.php” –data=” uname=admin&passwd=admin&submit=Submit” -f –banner --dbs --users
Sqlmap设置参数分割符
在某些情况下,sqlmap需要覆盖默认参数分隔符(例如& in GET和POST数据),才能正确地分割和单独处理每个参数。如果是如分号等分割符,sqlmap可能不能检测出,因此需要特别指定分隔符,如指定分号为分割符 --param-del=”;”
Sqlmap设置Cookie头
Sqlmap中用来设置Cookie的参数:
--cookie 直接指定具体的cookie值
--cookie-del 指定参数之间的分隔符
--load-cookies 加载某些特殊情况的cookie
--drop-set-cookie 丢弃服务端相应的set-cookie的值
使用场景:
1、Web应用程序具有基于Cookie验证的过程;
2、想利用Cookie值上的SQL注入漏洞。
Sqlmap使用Cookie过程:
1、登录或浏览页面。
2、打开审计工具或代理截断,复制Cookie。
3、在Sqlmap中使用 --cookie 粘贴Cookie。
例如:
dvwa中SQL注入,输入参数1提交复制url直接测试
sqlmap -u 'http://192.168.4.4/web/DVWA/vulnerabilities/sqli/?id=1&Submit=Submit#' –banner
然后加上cookie值之后
sqlmap -u 'http://192.168.4.4/web/DVWA/vulnerabilities/sqli/?id=1&Submit=Submit#' --cookie="security=low; PHPSESSID=ecj2nlihgboo9ftaqo3bal76r0" –banner
注意:如果需要对HTTP Cookie值进行SQL注入探测,需要设置 --level 2以上(3)。
http://192.168.4.4/web/sqli-labs/Less-20/
sqlmap -r /root/桌面/test.txt --level 3 -p uname –banner
或者直接在cookie值最后面加上一个*,就不用指定-p参数了
Sqlmap设置User-Agent
默认情况下, sqlmap使用以下用户代理头值执行HTTP请求:
sqlmap/1.0-dev-xx (http://sqlmap.org)
然而,一些站点在服务端检测HTTP User-Agent值, 如果不是一个合法的值, 就会中断连接。 同时Sqlmap也会曝出错误。 通过提供自定义用户代理作为选项的参数, 可以使以下用选项来伪造它。
--user-agent=”xxxxx”
此外, 通过 --random-agent, sqlmap将从/usr/share/sqlmap/txt/user-agent.txt中随机选择一个用于会话中的所有HTTP请求,windows中会从’E:\SCAN\sqlmap\sqlmap\data\txt\user-agents.txt’中选择,具体根据安装位置而定。
python2 sqlmap.py -u "http://192.168.4.4/web/sqli-labs/Less-1/index.php?id=1" --random-agent –banner
注意针对User-Agent的值探测SQL注入, 需要设置–level 值为3.
如less-18,不加星号必须加–level >2 才可以默认对user-agent参数进行检测,默认是1,或者直接加上*号,指定level,具体位置检测更快。
Sqlmap设置Host头
可以手动设置HTTP主机头值。 默认情况下, 从提供的目标URL解析HTTP主机头。
注意, 如果 --level设置为5, 最深入的探测,将可以对HTTP主机头进行SQL注入检测。
Sqlmap设置Referer头
Referer表明的是当前页面是从哪个页面跳转过来的一个值,伪造HTTP Referer值是可能的。 默认情况下, 如果没有显式设置, HTTP请求中不会发送HTTP引用头。请注意, 如果–level设置为3或以上, 将针对HTTP引用头 进行SQL注入测试。以less-19为例,将数据表放到文档中,设置–level 3将可以对该参数进行测试。
Sqlmap设置额外HTTP头
有时候数据包中并没有对应的参数,如referer参数,这时就可以额外进行设置,通过设置选项–header或-H, 可以提供额外的HTTP标头。 每个标头必须用换行符(\n)分隔, 从配置INI文件中提供它们要容易得多。 可以查看示例sqlmap.conf文件。
-H 只能设置一个额外的http头
--header 可以同时设置多个额外的http头
如以less-1为例,原始数据包如下:
通过sqlmap额外设置Host和Referer
python2 sqlmap.py -u "http://192.168.4.4/web/sqli-labs/Less-1/index.php?id=1" --headers="User-Agent:xxxxxx\nHost:1.1.1.1"
使用-H测试,可以看到只有第一个设置成功
python2 sqlmap.py -u "http://192.168.4.4/web/sqli-labs/Less-1/index.php?id=1" -H "User-Agent:xxxxxx\nHost:1.1.1.1"
Sqlmap设置HTTP协议认证
Sqlmap中设置HTTP协议认证的参数: --auth-type和–auth-cred
其中–auth-type支持 Basic、 Digest、 NTLM
–auth-cred认证语法为: username:password
例如:
http://192.168.4.7/access/Production/PRODUCT_DETAIL.asp?id=1513
Sqlmap设置HTTP代理
设置代理可以达到隐藏真实ip的目的。
Sqlmap中设置代理的参数: --proxy, --proxy-cred, --proxy-file , --ignore-proxy,其中
--proxy
用来设置HTTP代理服务器位置
格式: --proxy “http://x.x.x.x:8080”
--proxy-cred
用来设置HTTP代理服务器认证信息
格式: --proxy-cred username:password
--proxy-file
用来设置多条代理在文件中
--ignore-proxy
当您希望通过忽略系统范围内的HTTP(S)代理服务器设置来针对本地网络的目标部分运行sqlmap时, 应该使用这种方法。
测试
直接搜索http代理,找到一些免费的代理ip,复制到proxy.txt中
如:https://www.kuaidaili.com/free/
python2 sqlmap.py -u "http://192.168.4.4/web/sqli-labs/Less-1/index.php?id=1" --proxy-file proxy.txt
如果代理不行还会自动更换
Sqlmap设置Tor隐藏网络
正常的互联网访问行为都是透明的,也就是说,用户通过互联网访问服务器的访问记录都是可以回溯审查的, 例如,互联网用户A通过互联网访问网站B,网站B的服务器部署了流量监控程序,这样就可以通过该程序找到用户A上网所使用的IP地址,进而可以确定其上网终端的地址,从而找到用户A的真实身份以及藏身地点。然而Tor的出现使这一切都变得复杂,Tor的工作原理是在用户A访问网站B的路由要经过一系列中间节点加密传输,终将网站B的内容返回到用户A,这样一来,追踪溯源就变得极为困难。
Sqlmap中设置Tor网络的参数: --tor, --tor-port, --tor-type, --check-tor,初次打开kali的时候需要安装tor
apt-get install tor
然后开启tor服务
service tor start
sqlmap -u url --tor --tor-type sss会直接报错,同时爆出type类型
然后检测tor是否可用
--check-tor
注意由于网络的原因,tor不会连接成功,如果有一台vps或者对应的其他位置的主机,tor网络就会连接成功,使用tor网络进行探测,隐藏真实的ip地址。
Sqlmap设置延迟
Sqlmap探测过程中会发送大量探测Payload到目标, 如果默认情况过快的发包速度回导致目标预警。 为了避免这样的情况发生, 可以在探测设置Sqlmap发包延迟。 默认情况下, 不设置延迟。
--delay 0.5 设置延迟0.5秒
Sqlmap设置超时
在考虑超时HTTP(S)请求之前, 可以指定等待的秒数。 有效值是一个浮点数, 例如10.5表示10秒半。 默认设置为30秒。
--timeout 10.5 设置等待时间10.5秒
当连接后停止服务就会出现等待超时重连的问题,如下:
Sqlmap设置重试次数
--retries count 设置对应重试次数, 默认情况下重试3次。
sqlmap -u "http://192.168.4.4/web/sqli-labs/Less-1/index.php?id=1" --timeout 10 --retries 5
Sqlmap设置随机化参数
Sqlmap可以指定要在每次请求期间随机更改其值的参数名称。 长度和类型根据提供的原始值保持一直。
--randomize 参数名称
未设置随机化参数之前
设置随机化参数之后
Sqlmap设置日志过滤目标
与使用选项-l使用从提供的日志解析的所有主机不同, 您可以指定有效的Python正则表达式, 用于过滤所需的日志。
--scope="选择内容或者过滤表达式"
http://192.168.4.10/web/sqli-labs/Less-2/?id=1
以上是测试目标,然后再访问一些其他的网页,进行筛选
python2 sqlmap.py -l C:\Users\Administrator\Desktop\proxy.txt --scope="192.168.4.10"
Sqlmap设置忽略401
--ignore-401 参数用来忽略未验证错误。
如果您想测试偶尔返回HTTP错误401(未经授权的)的站点,而您如果想忽略它并在不提供适当凭证的情况下继续测试,那么您可以使用该参数。
实例站点:
http://192.168.4.7/access/Production/PRODUCT_DETAIL.asp?id=1513
sqlmap.py -u "http://192.168.4.7/access/Production/PRODUCT_DETAIL.asp?id=1513" --ignore-code 401
Sqlmap设置HTTP协议私钥
当web服务器需要适当的客户端证书和用于身份验证的私钥时,应该使用此选项。提供的值应该是一个PEM格式的key_file,其中包含证书和私钥。
--auth-file 文件名
Sqlmap设置安全模式
然避免在多次请求失败后销毁会话,中断连接,导致探测失败。有时,如果执行了一定数量的不成功请求,则在此期间的web应用程序或检查技术会销毁会话。这可能发生在sqlmap的检测阶段或利用任何盲SQL注入类型时。原因是SQL有效负载不一定返回输出,因此可能会向应用程序会话管理或检查技术发出信号。通过这种方式,sqlmap将访问每个预定义数量的请求,而不对某个安全URL执行任何类型的注入。
--safe-url, 指定对应url
--safe-post, POST数据发送到一个安全的URL
--safe-req, 读取对应http请求的单个文件,从文件加载安全的HTTP请求
--safe-freq, 多条请求的文件,定期请求访问一个安全的URL
Sqlmap设置忽略URL编码
据参数的位置(例如GET),默认情况下它的值可以是URL编码的。在某些情况下,后端web服务器不遵循RFC标准,需要以原始的非编码形式发送值,那么在这种情况下就可以设置该参数忽略。
--skip-urlencode。