极客大挑战 secret file

相关知识

  1. 可以从html代码中找到相关的内容

  2. 通过抓包来获取各个页面的内容

  3. 这个最主要的东西还是php伪协议的应用,这道题应该属于文件包含漏洞的题目

  4. php://filter 是一种元封装器, 设计用于数据流打开时的筛选过滤应用。
    这对于一体式(all-in-one)的文件函数非常有用,类似 readfile()、 file() 和
    file_get_contents(), 在数据流内容读取之前没有机会应用其他过滤器。

环境:

  • allow_url_fopen:on默认开启该选项为on便是激活了URL形式的fopen封装协议使得可以访问URL对象文件等。
  • allow_url_include:off默认关闭,该选项为on便是允许包含URL对象文件等。

解题

首先打开网站映入眼帘的是这个图片
在这里插入图片描述

我们第一个想法就是f12查询相关的代码,开始查看:
在这里插入图片描述
这里我们可以看到页面代码的里面是有一个隐藏的网站的,我们试着打开这个网站

在这里插入图片描述
这里我们依旧是查看代码,在secret范围内查找到一个隐藏的代码
在这里插入图片描述
我们打开,但是我们发现最后显示的是end.php,没有显示action.php。我们这里可以通过抓包获取
在这里插入图片描述
这里有一个secr3t.php
在这里插入图片描述

打开flag.php
在这里插入图片描述

重点来了,重点来了!!

这里我们可以确定的就是flag肯定在这个页面,但是显示不出来,我们可以利用secr3t.php的文件包含漏洞
传入的file经过了一些过滤,但是没有经过filter,我们可以用php://fileter来获取文件,构造: ./sccr3t.php/file://filter/convert.base64-encode/resource+flag.php 之后就可以得到加密的文件,解码一下就可以了