DNSlog注入 信息的 带外|外带 sql注入利用详解+实操

DNSlog注入

DNSlog注入原理

dnslog注入也可以称之为dns带外查询,是一种注入姿势,可以通过查询相应的dns解析记录,来获取我们想要的数据

一般情况下,在我们无法通过联合查询直接获取数据的情况下,我们只能通过盲注,来一步步的获取数据,但是,使用盲注,手工测试是需要花费大量的时间的,可能会想到使用sqlmap直接去跑出数据,但在实际测试中,使用sqlmap跑盲注,有很大的几率,网站把ip给封掉,这就影响了我们的测试进度

首先说明,dns带外查询属于MySQL注入,在MySQL中有个系统属性 secure_file_priv特性,有三种状态 secure_file_priv为null 表示不允许导入导出 secure_file_priv指定文件夹时,表示mysql的导入导出只能发生在指定的文件夹 secure_file_priv没有设置时,则表示没有任何限制 可了解一下load_file和outfile

show variables like ‘%secure%’;查看load_file()可以读取的磁盘。

有路径或为null 的 则不可以进行 DNSlog 外带 为空的则可以 在 my.ini 可以设置 设置完要重启一下mysql服务 任务管理器中 重启服务

DNSlog注入工具

工具

这里用 http://www.dnslog.cn 来演示 首先看看怎么用 效果 复制到网址处 前面加点信息 查询 我们可以看到 刚刚查询该域名的信息就被记录下来了

SQL注入利用

当前查询信息 UNC路径

什么是UNC路径?

UNC路径就是类似softer这样的形式的网络路径。它符合 servernamesharename 格式,其中 servername 是服务器名,sharename 是共享资源的名称。

目录或文件的 UNC 名称可以包括共享名称下的目录路径,格式为:servernamesharenamedirectoryfilename。

例如把自己电脑的文件共享,你会获得如下路径,这就是UNC路径

那我们这就是通过这种方式来带出信息 load_file() 里面我们构造UNC路径

1、四个 其中为转义 代表两个 2、后面跟上我们要的信息 3、跟上我们的域名 4、最后还有个文件名,可以随意写 如下面的 123

那么mysql 就会去访问这个路径 去找这个路径下的文件123

也就会访问我们的地址 那么就会向上DNS解析 服务器就会记录下这次解析

我们再查DNSlog 日志 他的记录 ,然后我们就带出了信息

我们要的信息就带出来了 这里要注意的是,如果外带信息有特殊字符 例如 我们要外带这个 里面有个 @ 那么就外带不了 可以通过hex函数 转为16进制来外带

那么之后就是在实际应用中 能select load_file的地方就可以尝试 外带

经验分享 程序员 微信小程序 职场和发展