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

[RoarCTF 2019]Easy Calc 详解

  • [RoarCTF 2019]Easy Calc

  • 1

  • ajax 是进行前后端交互的 但是我们发现一个waf 就是他提示的
  • "calc.php?num="+encodeURIComponent($("#content").val()) ?num 的值必须是数字
  • 审计一下

  • foreach

  • 发现了num的限制
  • 但是eval是rce的标志所以我们首选的就是使用命令执行

  • 被禁止了 system() 使用其他的passtru()等也鸡鸡了
  • 所以就不是命令执行了 而是代码执行
  • scandir() 函数可以进行目录的扫描 我们扫一下根目录
  • 但是 / 被过滤了 可以使用chr(ascii码) 进行转换 / 的ascii 可以使用py脚本看一下

  • ord 和chr 一个是进行ascii码的查找一个是进行字符串的匹配
  • 所以构造payload ?num=scandir(chr(47))
  • 但是这个前端的验证必须要我们的num是数字

  • "calc.php?num="1;scandir(chr(47)) #+encodeURIComponent($("#content").val())
  • 黄的就是构造的pay
  • 试一下

  • 报废了
  • 还涉及一个知识点

  • php bypass
  • 我们了解一下php的接收参数的逻辑 : 他会对 num 传的数据进行去空格个/等的处理
  • 但是如果我们在 num之前加一个 空格或者加号 就会让前端的这个机制无法识别num的具体位置
  • 但是后端是没有影响的 后端会剥去这些

  • 加一个空格 :"calc.php ?num="+encodeURIComponent($("#content").val())
  • 对方就不认识了 这个前端的waf就绕过了直接传到后端
  • 实现绕过 这样num就可以是任何数了
  • node5.buuoj.cn:26836/calc.php? num=1;var_dump(scandir(chr(47)))
  • 为什么使用var_dump => 这个是处理数组的 而 scandir 返回的就是数组
  • 找到flag

  • 这个是文件 可以使用函数 file_get_contents()进行读取文件

  • 别忘了路径前面要有一个 /
  • ?%20num=1;var_dump(file_get_contents(chr(47).chr(102).chr(49).chr(97).chr(103).chr(103)))

  • flag{fbdd82de-9005-4f6d-a16b-424fca06a347}
http://www.xdnf.cn/news/189055.html

相关文章:

  • node.js 实战——mongoDB
  • Milvus(9):字符串字段、数字字段
  • 递归、搜索和回溯算法《递归》
  • LVDS系列10:Xilinx 7系可编程输入延迟(三)
  • 如何删除此电脑上的迅雷下载、WPS云盘、百度网盘
  • 多实例情况下,实例名较长dbca失败
  • P9904 [COCI 2023/2024 #1] Labirint 题解
  • codeforcesB. Alice‘s Adventures in Permuting
  • 「地平线」创始人余凯:自动驾驶尚未成熟,人形机器人更无从谈起
  • C++编程指南39 - 不要特化函数模板
  • Callable Future 实现多线程按照顺序上传文件
  • yolov5 源码 +jupyter notebook 笔记 kaggle
  • quickbi finebi 测评(案例讲解)
  • MySQL 主从复制
  • 图像保边滤波之BEEPS滤波算法
  • KUKA机器人自动备份设置
  • vscode 使用gitcode团队管理项目
  • 区块链随学随记
  • jetson nano上Ubuntu系统调用摄像头bug
  • 塔能科技:点亮节能之光,赋能工厂与城市
  • 20250428-AI Agent:智能体的演进与未来
  • 包装产线通过canopen转Profinet网关控制伺服
  • 关于常量指针和指向常量的指针
  • 泰山派常用命令
  • map和set:
  • ai环境conda带torch整体迁移。
  • 一文了解 模型上下文协议(MCP)
  • word插入APA格式的参考文献
  • NGINX ngx_http_addition_module 模块响应体前后注入内容
  • VS2022+OpenCasCade配置编译