攻防世界: fileclude

从上面的图片显示的代码来看,需要我们控制两个变量,file1与file2。
整体思路如下:
- 通过get传递参数到服务器,确保
file1与file2不为空 - 让
file_get_contents($file2)输出hello ctf - 让
include(file1)输出flag.php的源码内容
知识点:
使用include函数将需要的php文件展示出来。具体就是将需要包含的php文件转变为base64编码,使其不能被php引擎解释执行
//比如将flag.php的源码显示出来 php://filter/convert.base64-encode/resource=flag.php控制file_get_contents的输出
比如我们想控制file_get_contents的输出为:nihao
可以使用下面的方式:
bashdata://text/plain,nihao
理解了上述知识点,我们可以构造下面的参数,使得代码的控制逻辑按照我们的思路进行。
构造参数如下:
file1=php://filter/convert.base64-encode/resource=flag.php&file2=data://text/plain,hello ctf
将参数设置到浏览器中,如下:

得到flag.php经过base64编码后的源代码:
