ZJCTF-2019-NiZhuanSiWei
[ZJCTF 2019]NiZhuanSiWei
1.题目:
1 |
|
2.过程:
先是考察伪协议:
file_get_contents可以用data伪协议写入数据:text=data://text/plain;base64,d2VsY29tZSB0byB0aGUgempjdGY= //使text值为”welcome to the zjctf”
file提示useless.php,用php://filter读取:
php://filter/read=convert.base64-encode/resource=useless.php
关于__tostring:
打印一个对象时,如果定义了__toString()方法,就能在测试时,通过echo打印对象体,对象就会自动调用它所属类定义的toString方法,格式化输出这个对象所包含的数据。如果没有这个方法,那么echo一个对象时,就会报错Object of class Account could not be converted to string,实际上这是一个类型匹配失败的错误。
echo $password 就是使其调用反序列化后的__tostring方法。
那再读取flag.php就行了。结果半天没有反应……
仔细读源码发现一丝异常:脚本并没有调用useless.php……一般会requireonce或include
include($file)是可控的,使file为useless.php:
1 | password=O:4:"Flag":1:{s:4:"file";s:57:"php://filter/read=convert.base64-encode/resource=flag.php";} |
解码得:
1 | <br>oh u find it </br> |
ZJCTF-2019-NiZhuanSiWei