### 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 或更高                  |