我使用 sqlmap 来测试我公司的服务。
我尝试增加其--level
选项的值,但我没有找到对增加--risk
值的测试的清晰描述。
那么,风险级别 2 和 3 测试的作用是什么,运行它们的风险是什么?
我使用 sqlmap 来测试我公司的服务。
我尝试增加其--level
选项的值,但我没有找到对增加--risk
值的测试的清晰描述。
那么,风险级别 2 和 3 测试的作用是什么,运行它们的风险是什么?
默认情况下,sqlmap 将测试所有指定的 GET 和 POST 参数,但是在某些情况下,您可能想要测试其他入口点,例如 HTTP 标头。可以使用特定选项指定它,但最直接的技术是使用 --level 选项。sqlmap 中有 5 个级别可用(默认为 1 级)。Level 2 添加 HTTP Cookie header 测试,level 3 添加 HTTP User-Agent/Referer header。我无法向您提供有关更高级别的更多信息,因为sqlmap wiki上没有关于它们的更多信息。
关于风险。有3个风险值。维基写道:
默认值为 1,这对于大多数 SQL 注入点来说是无害的。风险值 2 将基于大量查询时间的 SQL 注入测试添加到默认级别,值 3 还添加了基于 OR 的 SQL 注入测试。
--risk
在 OscarAkaElvis 的回答中得到了正确解释。
但是,--level
不仅添加了更多的注入点,例如 cookie 和其他标头,而且还为每个注入点执行了更多的测试。如果您只想对 1 个参数执行所有可能的测试,您仍然需要级别 5。这些值定义为:
- 1:总是(<100 个请求)
- 2:再努力一点(100-200 个请求)
- 3:良好的请求数量(200-500 个请求)
- 4:广泛的测试(500-1000个请求)
- 5:你有足够的时间(>1000 个请求)
如果你想测试一个特定的参数,而不需要 sqlmap 向各个方向随机喷射废话并成倍增加请求数,你可以使用-p
. 例如,要在级别 5 上测试id
参数,您可以使用:GET /admin?id=7&op=fetch
sqlmap -p id --level 5 -u 'https://example.com/admin?id=7&op=fetch'
对此进行测试,sqlmap 1.5.2 仅使用基本联合测试(1-10 列,它会提示)实际执行的每个级别的请求数为:
53
请求 342
请求1080
请求2060
请求3280
请求当增加到 时--risk 3
,测试的数量会进一步增加:
112
请求 646
请求2160
请求4320
请求7850
请求最后,虽然 OscarAkaElvis 正确地引用了文档说:
风险值 2 将基于查询时间的大量 SQL 注入的测试添加到默认级别
风险级别 1 也已经进行了基于时间的 SQL 注入。您无需为此增加风险级别。较高的风险级别只会使用更慢的查询,例如,如果它们工作并阻止 Web 服务器,这可能会使系统停机更长时间。
您可以通过在此目录中的文件中使用 ctrl+f 来准确查看它对不同--level
和值的作用: https://github.com/sqlmapproject/sqlmap/tree/master/data/xml/payloads
例如通过搜索,您的浏览器将找到该风险级别的所有查询。--risk
<risk>1