[极客大挑战 2019]Secret File

Posted jleixin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[极客大挑战 2019]Secret File相关的知识,希望对你有一定的参考价值。

0x01

进入页面如下

技术图片

看不到什么东西,所以查看源码

技术图片

源码中发现有一个链接到另一个页面,原页面为黑色看不到链接,所以我们转到链接给的页面

技术图片

有一个按钮,点击看看

技术图片

发现点击之后直接跳到了end.php页面,查看源码也没有什么有用的东西,应该是时间过短然后就跳转,所以我们用抓包截断一下,发现结果如下

技术图片

验证了我的想法,存在这个页面,直接进去看看

0x02

技术图片

<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>

给出了一段html代码,存在inculde函数,看来需要用到文件包含来读取文件,先简单尝试一下

技术图片

直接查看会出现这样的结果,查看页面源代码也没有任何东西,看来无法直接查看内容

通过对html代码的审计我们发现,代码过滤了data协议,input协议,ftp协议,当然还有一些协议它没有过滤,所以这里我们可以用伪协议文件包含来读取flag

0x03

file://		访问本地文件系统
http://		访问 HTTPs 网址
ftp://		访问 ftp URL 
Php://		访问输入输出流
Zlib://		压缩流
Data://		数据
Ssh2://		security shell2 
Expect://		处理交互式的流
Glob://		查找匹配的文件路径

这里尝试file协议直接读取,发现无法读取

技术图片

所以尝试php伪协议,那么php://input也是被过滤了,所以这里唯一没有过滤的就是php://filter伪协议,所以这里我们使用该伪协议进行flag读取

payload:

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

技术图片

将读取到的内容base64解密得到flag

技术图片

总结

考察伪协议和代码审计,就是常见的伪协议的运用

以上是关于[极客大挑战 2019]Secret File的主要内容,如果未能解决你的问题,请参考以下文章

[HCTF 2018]WarmUp&[极客大挑战 2019]Knife&[极客大挑战 2019]Secret File&[极客大挑战 2019]BuyFlag

[极客大挑战 2019]Secret File

buu-[极客大挑战 2019]Secret File

BUUCTF[极客大挑战2019]Secret File

[极客大挑战 2019]Secret File

[极客大挑战 2019]Secret File