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

PHP反序列化简单使用

注:比较简陋,仅供参考。

编写PHP代码,实现反序列化的时候魔法函数自动调用计算器

PHP反序列化

serialize(); 将对象序列化成字符串

unserialize(); 将字符串反序列化回对象

创建类

class Stu{
public $name;
public $age;
public $sex;
public $score;
}

创建对象

$stu1 = new Stu();
$stu1->name = "zs";
$stu1->age = 22;
$stu1->sex = true;
var_dump($stu1);
echo "<br />";
echo serialize($stu1);

反序列化

字符串转换成对象

O:object

反序列化

以 __ 开头的函数,是PHP 中的魔术方法。类中的魔术方法,在特定情况下会自动调用。即使魔术方法在类中没有被定义,也是真实存在的。__construct() 在创建对象时自动调用__destruct() 在销毁对象时自动调用__wakeup() unserialize()时会自动调用这个函数__sleep() serialize()时会自动调用这个函数

PHP反序列化举例

可能会有小bug,问题不大

漏洞逻辑

当执行反序列化语句 $stu1 = unserialize($stu1); 时,系统会自动调用 stu() 类中的 __wakeup() 方法,__wakeup() 方法调用函数a(),函数 a() 调用函数 b(),函数 b() 接收传参,执行系统命令

<?php
// 定义函数 a()
function a(){// 调用函数 b()b();
}
// 定义函数 b()
function b(){
// 方法一:// 如果参数 cmd 的值为 zs 则执行 system 打开计算器/if(@$_GET['cmd']=='zs'){/    system("calc");/}
// 方法二:可以执行其他系统命令// 如果参数 cmd 的值为 calc 则打开计算器$cmd=$_GET['cmd'];
    @system($cmd);
}
// 创建 stu 类
class Stu{// 定义属性public $name;public $age;public $sex;public $score;// 定义方法,当执行 unserialize() 反序列化函数时自动调用 __wakeup() 方法public function __wakeup(){a();}}// 创建对象$stu1 = new Stu();// 对象赋值$stu1->name = "zs";$stu1->age = 22;$stu1->sex = true;// var_dump($stu1);// 序列化$stu1 = serialize($stu1);// var_dump($stu1);// 反序列化echo "<br />";$stu1 = unserialize($stu1);// var_dump($stu1);?>

验证

相关文章:

PHP反序列化简单使用

注&#xff1a;比较简陋&#xff0c;仅供参考。 编写PHP代码&#xff0c;实现反序列化的时候魔法函数自动调用计算器 PHP反序列化 serialize(); 将对象序列化成字符串 unserialize(); 将字符串反序列化回对象 创建类 class Stu{ public $name; public $age; public $sex; publi…...

专业课140+总分420+东南大学920专业综合考研,信息学院通信专业考研分享

专业课140总分420东南大学920专业综合考研&#xff0c;信息学院通信专业考研分享 我是三月开始系统考研备战&#xff0c;寒假先看的高数全书&#xff0c;奈何在家效率极其低下&#xff0c;才草草看了前三四章。回校后学习的比较认真&#xff0c;每天大概保持10个小时左右&…...

数据结构与算法编程题11

已知两个链表A和B分别表示两个集合&#xff0c;其元素递增排列。 请设计算法求出A与B的交集&#xff0c;并存放于A链表中。 a: 1, 2, 2, 4, 5, 7, 8, 9, 10 b: 1, 2, 3, 6, 7, 8 #include <iostream> using namespace std;typedef int Elemtype; #define ERROR 0; #defin…...

【LeetCode刷题】--40.组合总和II

40.组合总和II 本题详解&#xff1a;回溯算法 class Solution {public List<List<Integer>> combinationSum2(int[] candidates, int target) {int len candidates.length;List<List<Integer>> res new ArrayList<>();if (len 0) {return re…...

mysql面试内容点

left join和inner join的区别 1.返回不同 innerjoin只返回两个表中联结字段相等的行。left join返回包括左表中的所有记录和右表中联结字段相等的记录。 2.数量不同 inner join的数量小于等于左表和右表中的记录数量。left join的数量以左表中的记录数量相同。 3.记录属性不同…...

msvcp140.dll是什么?msvcp140.dll丢失的有哪些解决方法

在计算机使用过程中&#xff0c;我们经常会遇到一些错误提示&#xff0c;其中之一就是“msvcp140.dll丢失”。这个错误通常会导致某些应用程序无法正常运行。为了解决这个问题&#xff0c;我们需要采取一些措施来修复丢失的msvcp140.dll文件。本文将详细介绍5个解决msvcp140.dl…...

数字图像处理(冈萨雷斯)学习笔记

目录 一.机器视觉和计算机视觉二.图像处理基础1.什么是图像2.如何访问图像 三.图像仿射变换四.灰度变换 一.机器视觉和计算机视觉 机器视觉(Machine Vision,MV)和计算机视觉(Computer Vision&#xff0c;CV)的区别和联系&#xff1a; 机器视觉更注重广义图像信号(激光&#xff…...

MES系统管理范围及标准

一、计划管理 1.1计划分为:月度计划>周计划>日计划; 1.2MES系统一般都会直接精确到日计划(生产工单及生产指令); 1.3MES系统日计划分为三阶排产方式: 1.3.1日计划直接排到车间,由车间自行安排任务; 1.3.2日计划排到产线或设备,对应的班组长按照计划直接生产; 1.…...

vscode运行dlv报错超时

描述 点击F5运行dlv调试go代码时报错&#xff1a;couldnt start dlv dap: connection timeout 解决方式 在网上搜索这个报错&#xff0c;据说是dlv的配置问题&#xff0c;修改配置后还是不行。有人说是dlv和go的版本不匹配&#xff0c;就朝这个方向试试 go版本改为1.19之后…...

【Leetcode合集】1. 两数之和

1. 两数之和 1. 两数之和 代码仓库地址&#xff1a; https://github.com/slience-me/Leetcode 个人博客 &#xff1a;https://slienceme.xyz 给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标值 target 的那 两个 整数&#xff0c;并…...

使用Java解决快手滑块验证码

分析页面结构&#xff1a; 使用浏览器开发者工具分析快手滑块验证码页面的HTML和JavaScript结构&#xff0c;找到滑块验证的相关元素和事件。 模拟滑块滑动&#xff1a; 使用Java的Selenium库或其他网络爬虫工具&#xff0c;模拟用户在滑块上的操作。你需要模拟鼠标点击、拖动…...

瑞吉外卖Day06

1.用户地址 1.1实体类 /*** 地址簿*/ Data public class AddressBook implements Serializable {private static final long serialVersionUID 1L;private Long id;//用户idprivate Long userId;//收货人private String consignee;//手机号private String phone;//性别 0 女…...

从暗黑3D火炬之光技能系统说到-Laya非入门教学一~资源管理

我不知道那些喷Laya没有浏览器&#xff0c;嘲笑别人编辑器做不好&#xff0c;是什么水平&#xff1f; 首先目前国内除了WPS和飞书&#xff0c;就没有第三家公司能把编辑器做好。 要是一般的游戏开发者&#xff0c;如我&#xff0c;有一点点引擎代码&#xff08;某项目&#x…...

for,while,until语句

一、for循环 读取不同的变量值&#xff0c;用来逐个执行同一组命令&#xff0c;经常使用在已经知道要进行多少次循环的场景。 1、基本格式 for 变量名称(注意是名称&#xff0c;不是变量$等) [ in 名称范围 ] (可以不写)do 执行内容 若满足循环则做什么动作do…...

Apache POI简介

三十二、Apache POI 32.1 介绍 Apache POI 是一个处理Miscrosoft Office各种文件格式的开源项目。简单来说就是&#xff0c;我们可以使用POI在Java程序中对Miscrosoft Office各种文件进行读写操作。 一般情况下&#xff0c;POI都是用于操作Excel文件。 Apache POI 的应用场…...

基于Qt的UDP通信、TCP文件传输程序的设计与实现——QQ聊天群聊

&#x1f64c;秋名山码民的主页 &#x1f602;oi退役选手&#xff0c;Java、大数据、单片机、IoT均有所涉猎&#xff0c;热爱技术&#xff0c;技术无罪 &#x1f389;欢迎关注&#x1f50e;点赞&#x1f44d;收藏⭐️留言&#x1f4dd; 获取源码&#xff0c;添加WX 目录 前言一…...

【C++】:STL中的string类的增删查改的底层模拟实现

本篇博客仅仅实现存储字符(串)的string 同时由于Cstring库设计的不合理&#xff0c;我仅实现一些最常见的增删查改接口 接下来给出的接口都是基于以下框架&#xff1a; private:char* _str;//思考如何不用constsize_t _size;size_t _capacity;//这样写可以const static size_t…...

【论文阅读笔记】Supervised Contrastive Learning

【论文阅读笔记】Supervised Contrastive Learning 摘要 自监督批次对比方法扩展到完全监督的环境中&#xff0c;以有效利用标签信息提出两种监督对比损失的可能版本 介绍 交叉熵损失函数的不足之处&#xff0c;对噪声标签的不鲁棒性和可能导致交叉的边际&#xff0c;降低了…...

数据库管理工具,你可以用Navicat,但我选DBeaver!

大家好&#xff0c;我是豆小匠。数据库GUI工具哪家强&#xff0c;众人遥指Navicat。 可是Navicat老贵了。 如果公司有正版授权的还好&#xff0c;如果没有正版授权&#xff0c;还不给你用盗版&#xff0c;那才叫绝绝子。 好了&#xff0c;主角登场&#xff0c;DBeaver&#x…...

数据库的三范式(Normalization)

数据库的三范式&#xff08;Normalization&#xff09;是关系数据库设计中的基本理论原则&#xff0c;旨在减少数据冗余和提高数据库的数据组织结构。三范式通过将数据分解为更小的表&#xff0c;并通过关系建立连接&#xff0c;使得数据库设计更加灵活、规范和容易维护。在这篇…...

初探 Erlang 第二部分:解锁单赋值、模式匹配等基础概念!

单赋值与模式匹配在 Erlang 里&#xff0c;需从数学意义理解变量&#xff0c;一旦绑定就不能更改值。 运算符进行模式匹配&#xff0c;可从复杂结构提取数据。还能控制程序流程、写出简洁代码。守卫守卫是模式匹配的额外约束&#xff0c;可用于函数头部、case 和 if 语句&#…...

Drawboard PDF免费版限制7个工具?别急,这份Windows 11下的高效工具栏配置与替代方案请收好

Windows 11下Drawboard PDF免费版的高效工具栏配置与替代方案 最近不少用户发现&#xff0c;Drawboard PDF在最新版本中对免费用户增加了更多限制——最明显的就是将可用工具数量限制在7个以内。对于习惯了丰富工具栏的研究人员和学生来说&#xff0c;这无疑增加了工作流程的复…...

【读书笔记】《叶檀谈理财》

叶檀谈理财&#xff1a;普通人的资产配置与投资逻辑 一、经济学家的预测&#xff0c;能信几分&#xff1f; 经济学家做预测的准确率大约只有40%&#xff0c;与大猩猩投飞镖的概率相差无几。 理解这一点&#xff0c;需要区分三类人的本质差异&#xff1a; 学术经济学家&#…...

当心爱的网络小说突然消失:如何用一款开源工具打造你的永久数字图书馆

当心爱的网络小说突然消失&#xff1a;如何用一款开源工具打造你的永久数字图书馆 【免费下载链接】novel-downloader 一个可扩展的通用型小说下载器。 项目地址: https://gitcode.com/gh_mirrors/no/novel-downloader 你是否曾经有过这样的经历&#xff1f;深夜追更的小…...

别再只用普通用户了!详解在Ubuntu Server 22.04中安全启用并远程登录Root账户的全流程

深度解锁Ubuntu Server 22.04的Root权限&#xff1a;安全实践与远程管理全指南 在Linux系统管理中&#xff0c;Root账户如同掌控系统命脉的钥匙。Ubuntu基于安全考虑默认禁用Root直接登录&#xff0c;但某些场景下——比如批量部署服务、调试内核模块或管理多台服务器时&#x…...

别再只用单片机点灯了!用Multisim仿真4017+运放,体验纯硬件流水灯的乐趣

从单片机到纯硬件&#xff1a;用Multisim仿真4017运放打造复古流水灯 在嵌入式开发领域&#xff0c;点灯实验几乎是每个工程师和学生的入门必修课。从Arduino的digitalWrite()到STM32的HAL库&#xff0c;我们习惯了用几行代码控制LED的亮灭。但你是否思考过&#xff0c;在微控制…...

你的效率革命:为什么这款跨平台桌面待办工具值得一试?

你的效率革命&#xff1a;为什么这款跨平台桌面待办工具值得一试&#xff1f; 【免费下载链接】My-TODOs A cross-platform desktop To-Do list. 跨平台桌面待办小工具 项目地址: https://gitcode.com/gh_mirrors/my/My-TODOs 你是否经常被各种任务搞得焦头烂额&#xf…...

GoLand里文件‘全红’却只改了个换行?聊聊Git换行符那些事(附core.autocrlf详解)

GoLand里文件‘全红’却只改了个换行&#xff1f;聊聊Git换行符那些事&#xff08;附core.autocrlf详解&#xff09; 刚接触Git和GoLand的新手开发者&#xff0c;可能会遇到一个令人困惑的场景&#xff1a;明明只修改了某个文件的一行代码&#xff0c;提交前却发现整个项目的文…...

Node2Vec参数调优与语义分词对比实践

1. 项目背景与核心挑战在自然语言处理领域&#xff0c;如何有效捕捉词语间的语义关系一直是个关键问题。Node2Vec作为图嵌入算法在词向量表示中展现出独特优势&#xff0c;但实际应用中常遇到两个痛点&#xff1a;超参数选择缺乏系统指导&#xff0c;以及与传统语义分词方法的效…...

通过taotoken在ubuntu上快速切换openai与anthropic模型进行对比测试

通过 Taotoken 在 Ubuntu 上快速切换 OpenAI 与 Anthropic 模型进行测试 1. 准备工作 在 Ubuntu 系统上使用 Taotoken 平台进行多模型测试前&#xff0c;需要完成以下基础配置。首先确保系统已安装 Python 3.8 或更高版本&#xff0c;可通过终端运行 python3 --version 验证。…...