什么是RCE? RCE:romote commond/code execute,其分为远程命令执行和远程代码执行。漏洞形成的原因是开发者没有在数据输入处做检测和过滤导致产生漏洞。做题之前先把需要知道的知识点大概罗列一下吧!
php常用的伪协议就几个,使用多了就好了。
这里发现用前面的伪协议也可以拿到flag,但这题考的远程包含。
cat的代替命令有很多,比如:tail,more等。
linux下空格可以使用{IPS},{IPS}9来代替。
这题过滤了目录分隔符这玩意,换个思路,我们可以通过cd命令到flag文件目录下,就可以避免使用目录分隔符了。
发现过滤了 & 运算符,但没过滤 ;这个,所以改成 ;就OK了。
观察源代码发现把一些运算符都过滤了,连||,;,flag都没放过,所以我们肯定需要找到其他的东西来代替;&这些运算符,这里用的是%0a和%09,他们分别代理换行和tab的意思。这里的payload:127.0.0.1%0acd%09*here%0als,表示通过tab补齐功能来绕过flag关键字的过滤,并显示当前目录下的文件。