### SQLMap 参数 level 与 risk 区别

level (探测等级)

`level` 选项用于指定 `sqlmap` 测试的深度，范围从1到5。`level` 值越高，`sqlmap` 会尝试更多的 Payload，但同时也会增加请求的数量和测试时间

- Level 1：默认等级，会测试一些基本的 Payload，比如单引号 `'` 和双引号 `"`。这适用于快速探测，通常不会对应用造成太大影响
- Level 2：会增加基于时间的 Payload，用于测试盲注
- Level 3：会测试 `AND/OR` 布尔盲注以及一些常见的报错注入 Payload
- Level 4：会测试一些不常见的、复杂的 Payload，例如基于 `UNION` 查询的 Payload
- Level 5：最高等级，会测试所有的 Payload，包括一些非常规的、可能导致应用崩溃的 Payload

总结：`level` 决定了 `sqlmap` 攻击的深度和复杂性，它告诉 `sqlmap` 应该使用多少种不同的技术来探测漏洞

risk (危险等级)

`risk` 选项用于指定 `sqlmap` 执行 Payload 的危险程度，范围从1到3。`risk` 值越高，`sqlmap` 会使用一些可能对数据库造成修改或破坏的 Payload

- Risk 1：默认等级，`sqlmap` 只会使用那些不会对数据库数据造成修改的 Payload。例如，`UNION` 查询、布尔盲注等
- Risk 2：会增加一些可能造成轻微数据修改的 Payload，比如基于 `GET` 或 `POST` 参数的更新语句
- Risk 3：最高等级，会尝试可能对数据库造成重大破坏的 Payload，例如 `DELETE`、`INSERT` 和 `UPDATE` 等。在没有明确授权的情况下，不建议使用这个等级

总结：`risk` 决定了 `sqlmap` 攻击的潜在危害性，它告诉 `sqlmap` 可以执行多“危险”的操作

特征 | level (探测等级) | risk (危险等级)
--- | --- | ---
关注点 | 攻击深度和技术类型 | 攻击危险性和破坏程度
决定因素 | 攻击手法（布尔、时间、报错、联合等） | 攻击操作（查询、更新、删除等）
默认值 | 1 | 1
常用组合 | level 3 或更高 | risk 2 或更高