题目
题目描述:好多file呀!
代码功能:检查通过GET请求传递的两个参数"file1"和"file2"。如果这两个参数都存在且非空,它将读取"file2"文件的内容,如果内容等于"hello ctf",则会执行"file1"文件。
解题思路:使file2的内容为hello ctf,这样读取file2之后即可执行file1文件的内容,我们可以构造file1文件的内容为:读取flag.php文件。
这里涉及到PHP伪协议的利用,PHP伪协议可以进行数据过滤和流处理。
基本语法为php://filter/标准输入输出流标识=过滤器
其中,[标准输入输出流标识] 可以是以下字符串之一:
read: 表示标准输入流(stdin)
write: 表示标准输出流(stdout)
其它文件系统可用流标识符,比如 php://temp (临时流)和 php://me