发布于 

BUUCTF 【ACTF2020 新生赛】 Include

项目 内容
难度 简单
类型 WEB
靶场 BUUCTF
坐标 [ACTF2020 新生赛]Include

首先 感谢Y1ng师傅~~

image.png

题解

打开链接,发现 tips 超链接
image.png

点击 URL后缀加入?file=flag.php,且前端显示为 can you find out the flag?
image.png

发现网站指纹PHP

image.png

前端不存在JS源码
image.png

再结合题目要求 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.phppayload

payload用于尝试读取受限文件的内容。然而,需要特别注意,这种用法可能会导致安全问题,因为它允许读取服务器上的任意文件。在实际应用中,应该谨慎使用这样的特殊输入流,并确保只允许读取受信任的文件。否则,可能会导致敏感信息泄露安全风险

获取FLAG

拼接后的URL如下
ip/?php://filter/read=convert.base64-encode/resource=flag.php

正常返回结果:
image.png

(=) 和 (==) 经常用于base64编码,解码后得到flag

<?php
echo "Can you find out the flag?";
//flag{a7a9ea7e-a3fa-4025-944f-14efc98591d9}