[极客大挑战 2019]Secret File

[极客大挑战 2019]Secret File

打开靶机,发现页面什么东西都没有,查看源代码,发现有一个新链接,我们就打开看一看

image-20220711092906232

发现是这样一个页面,直接点击,发现直接变成一个end网页了

image-20220711092950427

image-20220711093000140

再去secret的页面看看源代码里面有什么,发现也有一个链接,我们也打开看看,发现其实就是这个end页面,这个end页面的源代码里面就没有任何东西了

所以我们尝试去抓个包看看,去访问这个action.php,出现了一个文件的回显

image-20220711093646999

我们再去访问这个文件secr3t.php

image-20220711093715119

image-20220711093722603

给出了这个flag文件的提示,我们尝试直接去访问这个flag文件,发现是没有直接回显的,所以我们先回到原来的网页上访问这几个文件看看

image-20220711093831891

去访问这个secr3t.php文件,发现页面上是有代码的,我们进行代码审计

image-20220711111211844

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

strstr(a,b)函数,返回从b字符串第一次出现的位置,并返回字符串的剩余部分

<?php
echo strstr("hello world","llo");
?>

返回llo world

stristr()函数作用和strstr函数作用相同,所以那一段if语句的意思就是过滤了../ dat a 以及input协议。所以我们的想法是尝试用filter伪协议进行读取

filter伪协议:

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

image-20220711111037596

执行之后就出现了一段base64加密的编码,我们进行解密就可以得到flag了

image-20220711111121614

posted @ 2022-07-11 11:14  Jinx8823  阅读(115)  评论(0编辑  收藏  举报