SQLMap配置--string参数无法匹配响应体字符串问题求助
问题根源
你的参数配置逻辑写反了。--string的判定规则是:只有当响应体中包含你指定的字符串时,SQLMap才会将本次注入请求判定为「布尔真(即注入语句执行返回True)」。
你当前配置的匹配值是{"code":0},这是服务端返回的凭据校验失败内容,相当于你给SQLMap设定的判定规则是「只有登录失败才算注入真」,那遇到返回{"code":1}的登录成功响应(也就是注入条件成立时的真响应),SQLMap自然不会识别为有效正例,直接忽略。
修正方法
把--string的匹配值改为凭据验证通过时返回的特征字符串即可,修正后的执行命令如下:
sqlmap -u https://example.com/login --method="POST" --data "user=1&password=2" --text-only --string='{"code":1}' -v 6
备选匹配方案
如果遇到JSON特殊字符转义、动态内容干扰导致匹配不准,可以换用以下几种方式实现判定:
- 反向匹配假响应特征:使用
--not-string='{"code":0}'参数,规则是只要响应中不包含登录失败的特征串,就判定为布尔真,不需要严格匹配真响应的完整内容,容错率更高。 - 正则匹配:使用
--regexp='"code":1'参数,通过正则规则匹配特征内容,不需要完全对齐字符串格式,就算响应里带多余空格、换行也能正常识别。 - 你命令里已经添加的
--text-only参数是有效的,它会自动过滤响应中的HTML标签、仅提取纯文本内容做匹配,避免响应头、页面标签内容干扰匹配结果。
内容的提问来源于stack exchange,提问作者JonasK89874
相关产品推荐
相关产品推荐

