BUUCTF-web-[极客大挑战 2019]Secret File

BUUCTF-web-[极客大挑战 2019]Secret File_第1张图片查看源码之后发现achieve_room.php
BUUCTF-web-[极客大挑战 2019]Secret File_第2张图片点击secret,发现end.php
BUUCTF-web-[极客大挑战 2019]Secret File_第3张图片提示回去再仔细看看,查看achieve.php的源代码
BUUCTF-web-[极客大挑战 2019]Secret File_第4张图片发现action.php,访问,然而依旧回到了end.php
BUUCTF-web-[极客大挑战 2019]Secret File_第5张图片说明这个跳转的时间特别快,我们需要抓包,有一个抓包神器BrupSuite,使用它发现action有一个隐藏的回应
BUUCTF-web-[极客大挑战 2019]Secret File_第6张图片BUUCTF-web-[极客大挑战 2019]Secret File_第7张图片

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

直接访问试试,发现没有
BUUCTF-web-[极客大挑战 2019]Secret File_第8张图片这里可以用php伪协议来读取flag.php
构造playload:

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

BUUCTF-web-[极客大挑战 2019]Secret File_第9张图片
得到并base64解码得flag
BUUCTF-web-[极客大挑战 2019]Secret File_第10张图片小结:使用php伪协议去读取的原因?
返回审计php代码,发现文件包含,结合题目一下想到的文件隐藏,于是我们猜测flag在后端文件中,并需要我们去读取他,传入的file经过了过滤,但是没有过滤filter

你可能感兴趣的:(CTF)