zoukankan      html  css  js  c++  java
  • BUUCTF | [极客大挑战 2019]Secret File

    知识点:

    • 前端中背景可以覆盖内容,页面源代码可以查看完整的html
    • 在php文件中可以写入html代码,html可在前端展示出来,php代码主要是处理数据,通常不会展示。
    • 文件包含漏洞,PHP伪协议获取文件

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

    环境概要:

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

    php://filter参数简单总结:

    php://filter 参数                        |        描述


    resource=<要过滤的数据流>         |        必须项。它指定了你要筛选过滤的数据流。
    read=<读链的过滤器>                   |       可选项。可以设定一个或多个过滤器名称,以管道符(* *)分隔
    write=<写链的过滤器>                  |        可选项。可以设定一个或多个过滤器名称,以管道符( )分隔
    <; 两个链的过滤器>                       |     任何没有以 read= 或 write= 作前缀的筛选器列表会视情况应用于读或写链。

    简单介绍本题遇到的转换过滤器:

                                               转换过滤器                                                 |                               作用

                      convert.base64-encode & convert.base64-decode              |  等同于base64_encode()和base64_decode(),base64编码解码

    convert.quoted-printable-encode & convert.quoted-printable-decode  |               quoted-printable 字符串与 8-bit 字符串编码解码

    • 打开题目连接(https://buuoj.cn/challenges#[极客大挑战 2019]Secret File )我们可以看到一页背景为黑色,字体为红色的页面,这里已经给出了一个提示:想要的话可以给你,去找吧!把一切都放在那里了!我们可以猜测这个页面是隐藏了一些信息的。

    • 通过查看页面源代码或者按主鼠标左键一直拖动,我们可以发现隐藏的./Archive_room.php。

      访问Archive_room.php,发现又给出了提示:我把他们都放在这里了,去看看吧。还有一个类似button一样的东西,查看审查元素可知是action.php,我们点进去。
      访问action.php立即跳转到了end.php,并且页面显示的是:查阅结束 没看清么?回去再仔细看看吧。
      我们可以猜测action.php访问时间很短,时间一到立即跳转到end.php。为了拦截action.php,我们可以使用BrupSuite来抓包。
      在拦截的action.php中我们看到一处提示代码:<!DOCTYPE html> <html> <!-- secr3t.php --> </html>   访问secr3t.php,页面显示了php代码:<?php highlight_file(__FILE__); error_reporting(0); $file=$_GET['file']; if(strstr($file,"../")||stristr($file, "tp")||stristr($file,"input")||stristr($file,"data")){ echo "Oh no!"; exit(); } include($file); //flag放在了flag.php里 ?>   发现这里有一个文件包含漏洞,但是在这里好像没什么用,因为我们还不确定存在flag的文件。根据代码的注释内容,访问flag.php。又出现提示:啊哈!你找到我了!可是你看不到我QAQ~~~ 我就在这里。
      刚开始我们以为还是像之前一样用背景把flag给覆盖掉了,但是通过查看页面源代码发现并没有将flag写出来。根据提示我们可以肯定flag确实是在这里,但是前端却看不到,我们猜测flag是写在了php代码里面。那么怎样来获取完整的flag.php文件呢?我们立马想到了secr3t.php的文件包含漏洞<?php highlight_file(__FILE__); error_reporting(0); $file=$_GET['file']; if(strstr($file,"../")||stristr($file, "tp")||stristr($file,"input")||stristr($file,"data")){ echo "Oh no!"; exit(); } include($file); //flag放在了flag.php里 ?>   传入的file经过了一些过滤,但是没有过滤filter,我们可以用php://fileter来获取文件。构造url:http://00b5c733-809a-4aed-a498-27d306b09452.node3.buuoj.cn/secr3t.php?file=php://filter/convert.base64-encode/resource=flag.php
    (前面请使用自己的题目链接)

    • 到达终点
      获取到了flag.php的base64加密,复制加密内容到解密网站去即可得到flag

    总结:  这道题难度不是很大,每一步都有提示,主要需要掌握文件包含漏洞与php伪协议结合 

    php://filter 参数描述
  • 相关阅读:
    Fractions Again?! UVA
    Maximum Product UVA
    Investigating Div-Sum Property UVA
    Period UVALive
    Numbers That Count POJ
    Orders POJ
    小明的数列
    Spreading the Wealth uva 11300
    Play on Words UVA
    第二百七十天 how can I 坚持
  • 原文地址:https://www.cnblogs.com/SpouseLJ/p/13208623.html
Copyright © 2011-2022 走看看