BUUCTF 【ACTF2020 新生赛】 Include
项目 | 内容 |
---|---|
难度 | 简单 |
类型 | WEB |
靶场 | BUUCTF |
坐标 | [ACTF2020 新生赛]Include |
首先 感谢Y1ng
师傅~~
题解
打开链接,发现 tips
超链接
点击 URL后缀加入?file=flag.php
,且前端显示为 can you find out the flag?
发现网站指纹
为PHP
且前端
不存在JS源码
再结合题目要求 include
联想到 PHP的文件上传
, include
的代码默认不会显示,我们需要查看PHP源码
查看PHP源码
设计知识点:
php://filter
: 这是一个特殊的 PHP 输入流(wrapper),用于对输入和输出进行过滤处理。read=convert.base64-encode
: 这是php://filter
的参数,指示对输入流进行 Base64 编码。resource=flag.php
: 这是php://filter
的参数,指定要读取的文件资源。在这里,它指定了flag.php
文件,即要读取的文件名。
当使用 php://filter/read=convert.base64-encode/resource=flag.php
这个输入流时,PHP 会将 flag.php
文件的内容读取出来,并对其进行 Base64 编码后输出。这样,可以将文件内容作为 Base64 编码的字符串返回给调用者。
PS:
php://filter/read=convert.base64-encode/resource=flag.php
为payload
该payload
用于尝试读取受限文件
的内容。然而,需要特别注意,这种用法可能会导致安全
问题,因为它允许读取服务器
上的任意文件
。在实际应用中,应该谨慎
使用这样的特殊输入流,并确保只允许读取受信任
的文件。否则,可能会导致敏感信息泄露
和安全风险
。
获取FLAG
拼接后的URL
如下
ip/?php://filter/read=convert.base64-encode/resource=flag.php
正常返回结果:
(=) 和 (==)
经常用于base64
编码,解码后得到flag
<?php
echo "Can you find out the flag?";
//flag{a7a9ea7e-a3fa-4025-944f-14efc98591d9}