hkt1998

hkt1998

sqlmap 的 level 和 risk 参数

2024-01-27

level 参数

简单说,--level参数决定了sqlmap在检测SQL注入时的“努力程度”。

  • level 1默认的level等级,会测试GET和POST请求中的参数。
  • level 2:除了前面提到的,还会检查cookie里的数据。
  • level 3:user-agent和referer头部也纳入检测范围。
  • level 4~5:会尝试各种payloads和边界条件,确保不放过任何潜在的注入点。

risk 参数

--level 不同,--risk 参数更像是告诉 sqlmap:“我愿意承担多大的风险来进行这次测试”。

  • risk 1:安全第一。默认的风险等级,风险几乎为零。
  • risk 2:除了默认的检测,还会尝试时间型盲注。
  • risk 3:在风险等级2的基础上,再加上OR类型的布尔型盲注。这种方式在某些情况下可能会导致数据表的所有记录被更新,所以使用时需谨慎。

level和risk参数的区别

虽然 --level--risk 两个参数在某些方面有重叠,但它们各自侧重的方向是不同的。

  • 方向不同--level 更像是广度上的拓展,而 --risk 则是深度上的挖掘。
  • 场景不同:如果觉得默认的GET和POST参数检测不够,想要找找其它位置的注入点时,可以考虑加 --level等级。如果可以确定某个位置就是存在注入点,或是强烈怀疑某个地方存在注入,但目前的payload覆盖不到,而且愿意承担风险进行深入测试时,可以考虑提升 --risk等级。

自定义Payloads和参数选择

除了内置的payloads,sqlmap还支持用户自定义编辑和添加payloads。如果默认的测试方式不起作用,可以根据自己的需要,编写针对性的payloads来进行测试。同时,通过 -p 参数和 --skip 参数,还可以灵活地选择或排除某些参数进行测试,使检测过程更加高效和精准。使用了-p参数时会sqlmap自动忽略--level参数。

参考