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

从一个ctf题中学到的多种php disable_functions bypass 姿势

题目介绍

题目是Lilctf2025 的php-jail-is-my-cry
比赛链接:https://lilctf.xinshi.fun/
题目环境前半部分是 php最近的phar 新 trick
大佬的原理分析
https://fushuling.com/index.php/2025/07/30/%e5%bd%93include%e9%82%82%e9%80%85phar-deadsecctf2025-baby-web/
具体题目操作可看出题人博客https://blog.kengwang.com.cn/archives/668/#php-jail-is-my-cry
这里重点讲学习到的disable_functions bypass 姿势

现在的条件是 题目有文件上传的功能以及可以写webshell,但有严格的disable_functions以及disable_classes

姿势1 fpc_cnext

题目不出网且要执行/readflag, 因此执行/readflag并写到web目录
disable_function ban了很多,剩下file_put_contentscurl相关函数以及其他没啥大用的

curl 可以用file协议读取任意文件,很容易想到打cnext,CVE-2024-2961
文件就用curl file协议读取,payload生成用柯佬的脚本https://github.com/kezibei/php-filter-iconv

但rce需要文件操作的函数来触发,这里只有file_put_contents ,不同于之前常见的file_get_contents直接放payload就行,需要稍作修改,与之前 file_put_contents绕过死亡exit的方式差不多

不用data协议,数据要自己手动填入,在filter链子前加上个base64-decode,而且filter要要用write=,用read=也可以,得写把payload先写到文件里 resource的文件名随意
在这里插入图片描述
在这里插入图片描述

姿势2 curlfile_cnext

这个方法是从出题人博客中学到的,非常牛
在这里插入图片描述
payload 如下


$cu = curl_init('http://localhost/');
curl_setopt($cu, CURLOPT_RETURNTRANSFER, true);
curl_setopt($cu, CURLOPT_POST, true);
$f = new CURLFile($_GET[0]);
curl_setopt($cu, CURLOPT_POSTFIELDS, ['f' => $f,
]);
$data = curl_exec($cu);
echo $data;

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

姿势3 curl加载so

这个姿势是我在比赛时的做法,搜到了国外的文章,说curl 有个 --engine选项可以加载so文件rce
https://hackerone.com/reports/3293801
那就利用题目的文件上传传个so,用curl_setopt指定so文件来rce
在这里插入图片描述

在这里插入图片描述

http://www.xdnf.cn/news/1329751.html

相关文章:

  • CNN 在故障诊断中的应用:原理、案例与优势
  • 机器人控制基础:串级 PID 和模糊 PID介绍与对比(干货总结)
  • Transformer十问
  • java17学习笔记-Deprecate the Applet API for Removal
  • LCC-LCC谐振式无线充电系统控制技术研究的复现
  • 期权小故事:王安石变法与期权
  • 前端本地模糊搜索1.0 按照匹配位置加权
  • 土地财政历史探寻
  • Diamond开发经验(1)
  • RabbitMQ:SpringAMQP Direct Exchange(直连型交换机)
  • 走进数字时代,融入数字生活,构建数字生态
  • Arthas 全面使用指南:离线安装 + Docker/K8s 集成 + 集中管理
  • 开源 C++ QT Widget 开发(一)工程文件结构
  • 猫头虎AI分享|字节开源了一款具备长期记忆能力的多模态智能体:M3-Agent 下载、安装、配置、部署教程
  • Java NIO 核心精讲(上):Channel、Buffer、Selector 详解与 ByteBuffer 完全指南
  • Python量化交易:结合爬虫与TA-Lib技术指标分析
  • Vue2.x核心技术与实战(二)
  • 力扣hot100:三数之和(排序 + 双指针法)(15)
  • Android Cordova 开发 - Cordova 嵌入 Android
  • 谷歌为什么要将Android的页面大小(Page Size)从传统的4KB升级至16KB
  • Android RxJava数据库操作:响应式改造实践
  • Android-ContentProvider的跨应用通信学习总结
  • 2943. 最大化网格图中正方形空洞的面积
  • MCP(模型上下文协议):是否是 AI 基础设施中缺失的标准?
  • 电源、电流及功率实测
  • 【图像算法 - 18】慧眼辨良莠:基于深度学习与OpenCV的麦田杂草智能识别检测系统(附完整代码)
  • RabbitMQ:SpringAMQP 入门案例
  • 【自动驾驶】8月 端到端自动驾驶算法论文(arxiv20250819)
  • 最新研究进展:2023-2025年神经机器翻译突破性成果
  • 【LeetCode】17. 电话号码的字母组合