当前位置: 首页 > 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.lryc.cn/news/625927.html

相关文章:

  • 重塑酒店投屏体验:私密投屏技术的革新应用
  • 基于单片机智能点滴输液系统
  • 24.早期目标检测
  • 2025年- H99-Lc207--32.最长有效括号(栈、动态规划)--Java版
  • strlen 函数的使用与模拟实现
  • 云原生俱乐部-mysql知识点归纳(2)
  • Java网络编程:TCP与UDP通信实现及网络编程基础
  • 无人机场景 - 目标检测数据集 - 山林野火烟雾检测数据集下载「包含VOC、COCO、YOLO三种格式」
  • FastAPI 请求详解:全面掌握各种请求类型处理
  • 《基于大数据的全球用水量数据可视化分析系统》用Python+Django开发,为什么导师却推荐用Java+Spring Boot?真相揭秘……
  • 实践项目-1
  • Matplotlib数据可视化实战:Matplotlib图表注释与美化入门
  • LeetCode100-560和为K的子数组
  • Rust学习笔记(七)|错误处理
  • 2025年渗透测试面试题总结-21(题目+回答)
  • 堆、方法区、虚拟机栈、本地方法栈、程序计数器
  • RabbitMQ:SpringAMQP 多消费者绑定同一队列
  • Java配置文件
  • 第1章 React组件开发基础
  • 第10章 React应用测试
  • 我的SSM框架自学2
  • IDEA测试代码报java file outset source root异常
  • STM32-FreeRTOS快速入门指南(中)
  • 【软件安装】VScode介绍安装步骤及中文界面设置方法
  • 从数据孤岛到实时互联:Canal 驱动的系统间数据同步实战指南
  • Java 11中的Collections类详解
  • 正式签约 | OpenLoong 项目正式捐赠至开放原子开源基金会,成为全国首个具身智能方向孵化项目!
  • Vulkan笔记(十三)-帧缓冲区与命令池命令缓冲区
  • 使用 SemanticKernel 连接本地大模型 Ollama
  • 11.Ansible自动化之-内容集管理