当前位置: 首页 > 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.dtcms.com/a/339141.html

相关文章:

  • 网络聚合链路与软件网桥配置指南
  • 效果图只是起点:深挖3D可视化在家装建筑中的隐藏金矿
  • Unity进阶--C#补充知识点--【C#各版本的新功能新语法】C#1~4与C#5
  • mycat分库分表实验
  • 安全设计-防止非法移机
  • Java多线程:线程创建、安全、同步与线程池
  • C++语法学习笔记之六 --- 生命周期、作用域
  • 私有化部署全攻略:开源大模型本地化改造的性能与安全深度评测
  • https如何保证传递参数的安全
  • 从零开始的云计算生活——第四十六天,铁杵成针,kubernetes模块之Configmap资源与Secret资源对象
  • 【Java】Spring Boot 3.0 微服务架构:高效开发与部署的最佳实践指南
  • CETOL 6σ 解决一次性支架输送器精度与法规验证难题
  • 算法——快速幂
  • 教程:用XiaothinkT6语言模型快速实现文本情感分类,附轻量模型推荐
  • 全链路自主构建智慧科研写作系统——融合LLM语义理解、多智能体任务协同与n8n自动化工作流构建
  • TDengine IDMP 运维指南(3. 使用 Ansible 部署)
  • 决策树算法全景解析:从 ID3、C4.5 到 CART
  • 响应式爬虫系统设计:Scala异步任务编排与弹性容错机制
  • 工业级蓝光三维扫描仪:助力汽车零部件高精度检测与质量提升
  • C++11 lambda表达式使用讲解
  • string 题目练习 过程分析 具体代码
  • leetcode_239 滑动窗口最大值
  • 本地部署消息中间件 Weblogic 并实现外部访问
  • 2025年9月计算机二级MySQL题库及wampserver2.2e下载安装教程
  • 解决linux中磁盘爆满(准确说是文件系统爆满)导致mysql启动失败的问题——对文件系统进行扩容
  • Chrome 插件开发实战技术文章大纲
  • 前端国际化(i18n)解决方案深度比较
  • C#项目集成海康SDK指南:从搭建环境到实现视频预览、录制、截屏
  • 从H.264到AV1:音视频技术演进与模块化SDK架构全解析
  • ComfyUI部署Wan2.2,开放API,文生视频与图生视频