sqlmap注入时出现all tested parameters do not appear to be injectable. Try to increase values for '--level'/'--risk' options if you wish to perform more tests. If you suspect that there is some kind of protection mechanism involved (e.g. WAF) maybe you could try to use option '--tamper' (e.g. '--tamper=space2comment') and/or switch '--random-agent' [20:34:35] [WARNING] HTTP error codes detected during run: 404 (Not Found) - 73 times [*] ending @ 20:34:35 /2023-06-09/
时间: 2024-04-03 20:30:43 浏览: 1561
这个错误提示表明,SQLMap 无法成功注入目标网站,因为它测试的所有参数都不可注入。这可能是由于目标网站实施了一些安全保护措施,比如 Web 应用程序防火墙(WAF)等。您可以尝试以下措施来解决该问题:
1. 提高注入测试的风险等级和测试级别,以尝试更多的注入测试。
2. 使用SQLmap的--tamper选项来绕过目标网站的WAF,例如--tamper=space2comment。
3. 使用--random-agent选项来模拟随机的User-Agent头,以尝试绕过目标网站的防御。
4. 检查目标网站是否存在防火墙,如果存在防火墙,则需要使用其他技术手段来绕过它,如使用代理,修改请求头等。
5. 确保您的SQLMap版本是最新的,因为新版本可能包含对新的防御机制的支持。
相关问题
[CRITICAL] all tested parameters do not appear to be injectable. Try to increase values for '--level'/'--risk' options if you wish to perform more tests. If you suspect that there is some kind of protection mechanism involved (e.g. WAF) maybe you could try to use option '--tamper' (e.g. '--tamper=space2comment') and/or switch '--random-agent'
<think>嗯,用户的问题是关于在使用sqlmap进行SQL注入测试时,遇到参数不可注入的情况,想通过调整--level、--risk参数或者使用--tamper脚本来绕过WAF。首先,我需要回忆sqlmap的基本用法和相关参数的作用。
首先,--level和--risk参数的作用。记得--level控制测试的详细程度,级别越高,测试的参数和注入点越多。比如,level 1可能只测试GET参数,而level 5还会测试HTTP头等。用户可能只用了默认的level 1,所以有些参数没被检测到。这时候建议提高level值,比如到3或5,这样sqlmap会检查更多的位置,可能发现之前未检测到的注入点。
然后是--risk参数,它决定测试的风险程度。risk越高,使用更多可能造成服务器负担或破坏数据的payload。比如,risk 3会包含基于时间的重型payload。不过需要注意,高risk可能导致服务不可用,所以建议在测试环境中逐步提升。
接下来是--tamper参数,用来绕过WAF或过滤机制。tamper脚本可以对payload进行编码或变形,比如用base64、字符替换等。用户可能需要使用多个tamper脚本组合,比如space2comment和between的组合,或者自定义脚本。需要提醒用户参考已有的tamper脚本,并根据目标WAF的特点调整。
然后,还要考虑其他参数,比如--random-agent可以伪装User-Agent,避免被WAF识别;--timeout调整超时时间,防止因延迟被拦截;--delay控制请求间隔,降低触发WAF速率限制的风险。
用户的问题可能还涉及为什么参数显示不可注入,可能原因包括WAF拦截、参数本身不存在注入点、或者sqlmap的检测方法被过滤。这时候需要综合使用上述参数,并可能结合手动测试确认是否存在漏洞。
最后,要确保用户了解这些调整可能带来的风险,比如高risk可能导致数据破坏,建议在授权和测试环境下进行。同时,引用相关的资料,比如提供的引用[1]和[2],说明如何编写tamper脚本和参数设置。</think>针对SQL注入测试中参数不可注入的问题,可通过以下方法提升sqlmap检测效果:
### 一、--level参数优化
1. **作用**:控制检测范围与测试强度,级别越高检测越深入
2. **建议设置**:
- 默认level=1(仅测试GET参数)
- 提升至level=3时,检测Cookie和User-Agent头部
- 使用level=5时,将检测Host和Referer头部
```bash
sqlmap -u "http://example.com?uname=test" --level=5
```
### 二、--risk参数调整
1. **风险等级说明**:
- risk=1:基础查询(默认)
- risk=2:增加基于时间的盲注
- risk=3:包含OR/AND布尔型注入
2. **组合使用**:
```bash
sqlmap -u "http://example.com" --data="uname=admin" --risk=3 --level=5
```
### 三、--tamper脚本应用
1. **常用WAF绕过脚本**:
- `space2comment`:空格转注释/*随机字符串*/
- `between`:用BETWEEN替换大于号
- `charencode`:URL编码特殊字符
2. **组合脚本示例**:
```bash
sqlmap -u "http://example.com" --tamper=space2comment,between
```
### 四、补充技巧
1. 使用`--random-agent`伪装浏览器标识
2. 配合`--timeout=10`调整超时阈值
3. 添加`--delay=2`降低请求频率
当检测参数如`uname`时,建议采用阶梯式测试:先验证参数可访问性,再逐步提升检测强度。若发现WAF拦截特征,可参考渗透测试-tamper脚本编写方法[^2]创建自定义编码规则。
sqlmap -u "http://172.20.10.14/results.php" --data "search=1" -D Staff --tables
这是一条使用 sqlmap 工具进行数据库注入测试的命令。其中,-u 参数指定了注入目标的 URL,--data 参数指定了 POST 请求的参数,-D 参数指定了要操作的数据库名称,--tables 参数则表示要获取该数据库中的所有表名。
需要注意的是,这种行为属于未经授权的测试,可能会对目标系统造成安全风险和数据泄露等问题,因此应该遵守相关法律法规和道德规范,谨慎使用。
阅读全文
相关推荐
















