SQLMap测试本地Mutillidae注入时提示无法连接目标URL报错
问题描述
在运行于虚拟机的Kali Linux 5.17.0-kali3-amd64环境中本地部署Mutillidae 2.8.82,使用SQLMap测试博客提交页面的插入型SQL注入漏洞时,程序仅发送少量请求就终止运行,抛出如下连接错误:
sqlmap -r muti_header.txt --dbms=mysql --dbs -p 'blog_entry' --proxy 'http://127.0.0.1:8080' -vv ... [14:44:22][14:44:22] [CRITICAL] unable to connect to the target URL or proxy. sqlmap is going to retry the request(s) [14:44:22] [DEBUG] unable to connect to the target URL or proxy. sqlmap is going to retry the request [14:44:22] [DEBUG] unable to connect to the target URL or proxy. sqlmap is going to retry the request [14:44:22] [CRITICAL] unable to connect to the target URL or proxy
使用的muti_header.txt请求文件内容如下:
POST /mutillidae/index.php?page=add-to-your-blog.php HTTP/1.1 Host: localhost User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Firefox/91.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 Accept-Language: en-US,en;q=0.5 Accept-Encoding: gzip, deflate Referer: http://localhost/mutillidae/index.php?page=add-to-your-blog.php Content-Type: application/x-www-form-urlencoded Content-Length: 80 Origin: http://localhost Connection: keep-alive Cookie: language=en; cookieconsent_status=dismiss; welcomebanner_status=dismiss; continueCode=RNJMDy9vxX2pbowKOljEd8BtKTDiL2fyZHK9Syb0YZm6r1az8gq5Pk37BQWL; PHPSESSID=9lun8j8de1335bolvj8svg5tds; showhints=1 Upgrade-Insecure-Requests: 1 Sec-Fetch-Dest: document Sec-Fetch-Mode: navigate Sec-Fetch-Site: same-origin Sec-Fetch-User: ?1 csrf-token=&blog_entry=qwqweq&add-to-your-blog-php-submit-button=Save+Blog+Entry
已确认的异常现象:
- Burp Suite中可观测到所有SQLMap发出的请求均返回200状态码
- 浏览器刷新对应页面时,可看到大量已提交的SQL测试语句记录
- 已尝试添加
--random-agent参数、移除--proxy配置,问题仍未解决 - 当前环境后端数据库版本为10.6.7-MariaDB-3
排查解决步骤
- 修正请求文件的参数转义错误:保存的POST请求体中,参数分隔符
&被HTML转义为&,SQLMap读取文件时会将其识别为参数值的一部分,发出的请求参数格式不符合预期,会触发SQLMap的连接失败误判。直接将请求体中所有&替换为&即可。 - 跳过启发式连接检测:执行命令追加
--skip-heuristic参数,关闭SQLMap默认开启的启发式页面可用性校验。Mutillidae作为靶场环境,注入payload触发的页面报错、结构变化会被该检测逻辑误判为连接不可用,直接终止扫描流程。 - 调整连接容错参数:追加
--timeout=30 --retries=5 --ignore-redirects参数,规避本地环境响应波动、应用302跳转导致的连接判定错误。如果仍触发报错,可再加--no-cast参数,关闭结果类型自动转换逻辑,减少异常请求特征。 - 校验Host头配置:确认请求文件中
Host字段值和浏览器访问靶场的地址完全一致,如果浏览器通过127.0.0.1访问,就将Host: localhost修改为Host: 127.0.0.1,避免虚拟主机路由不匹配导致的部分请求响应异常。 - 检查代理规则配置:走Burp代理时,关闭Burp的自动修改请求、自动更新Content-Length功能,这类规则修改请求后会导致SQLMap收到的响应和预期特征不匹配,触发连接失败误判。
- 确认靶场安全级别:将Mutillidae的安全级别调整为0,关闭高安全级别下的CSRF token校验、输入过滤机制,避免防护逻辑拦截payload导致的响应异常。
内容的提问来源于stack exchange,提问作者Guilherme Tomishiyo
相关产品推荐
相关产品推荐

