Include题
点进去就是一个tip;点进去就是file=flag.php
有点指示性过强,现在基本上要做的就是把file里面的内容给取出来
php://filter
这是 PHP 内置的流伪协议,专门用来:在读入文件的时候,对文件内容做过滤处理
/read=
read:代表读取模式,代表我们是读取文件时应用这个过滤器。 还有对应的write是写入模式,做题几乎不用。
convert.base64‑encode
过滤器名字:把读到的全部文件内容做 base64 编码。
为什么必须 base64 编码?
- 如果直接输出 PHP 源码,源码里的
<?php ... ?>标签,浏览器会把它当成 PHP 标记直接忽略,看不到源码。 - base64 把所有字符转成字母数字,浏览器原样显示这串字符串,不会解析。 拿到这串 base64,再解码就能拿到原始 PHP 源代码
/resource=flag.php
resource=指定我们要读取的目标文件,这里目标文件是flag.php。
由此而构造/?file=php://filter/read=convert.base64‑encode/resource=flag.php
后找一个编码base64解码得到flag