[ACTF2020 新生赛]Include
目录
[ACTF2020 新生赛]Include
初次访问:
页面上就一个链接,点进去
点进链接后页面上就一句毫无鸟用的话,查看页面源码也没有其他的东西
也就是说前端确确实实就只输出了这一句话
再看URL,发现是用file
伪协议包含flag.php
这个文件来输出的,看这文件的名字应该就是含有flag的文件,为什么页面上没有显示?
有一种可能是flag{xxxx}被放在flag.php
的注释里,当php执行的时候会跳过注释,所以可以通过php://filter
这个伪协议将flag.php
里的源码以其他形式输出,这样子注释就不再因为按php的正常执行而被跳过
php://filter
是 PHP 中用于数据流过滤和操作的伪协议。它允许你在读取和写入数据流时应用各种过滤器来修改、处理或转换数据。
php://filter
的一般语法如下:
1
php://filter/[read/write]=<过滤器>/resource=<要过滤的数据流>
php://filter
:固定格式[read/write]
:读取数据流 / 写入数据流<过滤器>
:将数据流怎么处理,例如convert.base64-encode
是将数据流转化成Base64编码
构造payload:?file=php://filter/read=convert.base64-encode/resource=flag.php
意思是用php://filter
这个伪协议读取(read
) 服务器上的 flag.php
文件的内容并以Base64编码的形式(convert.base64-encode
)返回
这样会使flag.php
里的注释不再因为按php的正常执行被跳过,而会以Base64编码的形式显现出来
最后这串Base64编码的数据解码得到flag
|
|
参考文章
欲将心事付瑶琴。知音少,弦断有谁听?