sqlmap的level和risk参数
目录
level 参数
简单来说,--level 参数决定了 sqlmap 在检测 SQL 注入时的"努力程度"。
- level 1:默认等级,仅测试 GET 和 POST 请求中的参数。
- level 2:除了 level 1 的测试外,还会检查 Cookie 中的数据。
- level 3:在 level 2 的基础上,将 User-Agent 和 Referer 头部也纳入检测范围。
- level 4~5:尝试各种 payloads 和边界条件,确保不放过任何潜在的注入点。
risk 参数
与 --level 不同,--risk 参数更像是告诉 sqlmap:“我愿意承担多大的风险来进行这次测试”。
- risk 1:安全第一。默认风险等级,几乎零风险。
- risk 2:在默认检测基础上,增加时间型盲注测试。
- risk 3:在 risk 2 的基础上,再增加 OR 类型的布尔型盲注。这种方式在某些情况下可能会导致数据表的所有记录被更新,使用时需格外谨慎。
level 和 risk 参数的区别
虽然 --level 和 --risk 两个参数在某些方面有重叠,但它们各自侧重的方向不同。
-
方向不同:
--level更像是广度上的拓展(测试更多位置),而--risk则是深度上的挖掘(使用更具侵入性的 payload)。 -
使用场景不同:
- 如果觉得默认的 GET 和 POST 参数检测不够,想要寻找其他位置的注入点,可以考虑提高
--level等级。 - 如果确定某个位置存在注入点,或强烈怀疑但当前 payload 无法触发,且愿意承担风险进行深入测试,可以考虑提升
--risk等级。
- 如果觉得默认的 GET 和 POST 参数检测不够,想要寻找其他位置的注入点,可以考虑提高
自定义 Payloads 和参数选择
除了内置的 payloads,sqlmap 还支持用户自定义编辑和添加 payloads。如果默认测试方式不起作用,可以根据需要编写针对性的 payloads 进行测试。
同时,通过 -p 参数和 --skip 参数,可以灵活地选择或排除特定参数进行测试,使检测过程更加高效和精准。值得注意的是,使用了 -p 参数时,sqlmap 会自动忽略 --level 参数。