CTFHUB解题纪录-RCE基础
什么是RCE?
RCE:romote commond/code execute,其分为远程命令执行和远程代码执行。漏洞形成的原因是开发者没有在数据输入处做检测和过滤导致产生漏洞。做题之前先把需要知道的知识点大概罗列一下吧!
- eval()和system()函数的使用
- 文件包含产生的原因
- php伪协议的使用,如:php://, data://, php://input 等。
- 如何绕过过滤,如:%0a:代表换行。%09:代表tab,配合 * 可以用来补全命令或者文件名,以此来绕过关键字的绕过。
第一题:eval执行
第二题:文件包含
第三题:php:input
php常用的伪协议就几个,使用多了就好了。
第四题:读取源代码
第五题:远程包含
这里发现用前面的伪协议也可以拿到flag,但这题考的远程包含。
第六题:命令注入
第七题:过滤cat
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关键字的过滤,并显示当前目录下的文件。