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);?>

验证

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

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

相关文章

VSCode插件koroFileHeader的使用。

文章目录 前言一、koroFileHeader是什么&#xff1f;二、使用步骤1.安装1.配置2.食用 前言 今天的天气还不错&#xff0c;真是金风玉露一相逢&#xff0c;便胜却人间无数&#xff0c;写篇博客玩玩&#xff0c;主题&#xff1a;注释。注释的本质就是对代码的解释和说明&#xf…

BMS基础知识:BMS基本功能,铅酸和锂电池工作原理,电池系统的重要概念!

笔者有话说&#xff1a; 作为BMS从业者来讲&#xff0c;目前接触的BMS系统并不是很高大尚&#xff0c;但基础功能都是有的。 关于BMS的基本功能&#xff0c;工作原理&#xff0c;运行逻辑等&#xff0c;在此做一个梳理&#xff0c;讲一些最基础的扫盲知识&#xff0c;可以作为…

oracle数据库巡检常见脚本-系列三

简介 作为数据库管理员&#xff08;DBA&#xff09;&#xff0c;定期进行数据库的日常巡检是非常重要的。以下是一些原因&#xff1a; 保证系统的稳定性&#xff1a;通过定期巡检&#xff0c;DBA可以发现并及时解决可能导致系统不稳定的问题&#xff0c;如性能瓶颈、资源利用率…

羊大师详解羊奶如何帮助控制血压

羊大师详解羊奶如何帮助控制血压 羊奶是一种珍贵的天然饮品&#xff0c;不仅具有丰富的营养成分&#xff0c;还被证实对血压具有调控作用。很多人在了解到羊奶的功效后&#xff0c;都对其与血压之间的关系产生了浓厚的兴趣。接下来&#xff0c;小编羊大师将为大家详细介绍羊奶…

C语言——利用函数递归,编写函数不允许创建临时变量,求字符串长度

#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>int my_strlen(char* str) {if(*str ! \0)return 1my_strlen(str1);elsereturn 0; }int main() {char arr[] "hello";int len my_strlen(arr); //arr是数组&#xff0c;数组传参&#xff0c;传过去的是第…

uniapp 适配部分IPhone手机底部安全距离

部分 IOS 机型&#xff0c;比如 Iphone X 的屏幕底部有一条“小黑线”区域&#xff0c;uniapp 项目中我们可以使用CSS的 env(safe-area-inset-bottom) 语句来自适配 IOS 的底部安全区域高度&#xff0c;这个语句会返回该机型的底部安全区域高度&#xff08;单位 px&#xff09;…

【EI会议投稿】第九届电子技术和信息科学国际学术会议(ICETIS 2024)

第九届电子技术和信息科学国际学术会议&#xff08;ICETIS 2024&#xff09; The 9th International Conference on Electronic Technology andInformation Science&#xff08;ICETIS 2024&#xff09; ICETIS会议始于2016年&#xff0c;先后吸引众多来自国内外高等院校、科…

2015年2月4日 Go生态洞察:Go语言中的包命名艺术

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

Speaker Verification,声纹验证详解——语音信号处理学习(九)

参考文献&#xff1a; Speaker Verification哔哩哔哩bilibili 2020 年 3月 新番 李宏毅 人类语言处理 独家笔记 声纹识别 - 16 - 知乎 (zhihu.com) (2) Meta Learning – Metric-based (1/3) - YouTube 如何理解等错误率(EER, Equal Error Rate)&#xff1f;请不要只给定义 - 知…

【开源】基于JAVA的高校实验室管理系统

项目编号&#xff1a; S 015 &#xff0c;文末获取源码。 \color{red}{项目编号&#xff1a;S015&#xff0c;文末获取源码。} 项目编号&#xff1a;S015&#xff0c;文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、研究内容2.1 实验室类型模块2.2 实验室模块2.3 实…

离线安装Linux包的方法

sklearn库安装方法&#xff08;有详细步骤流程&#xff09; 离线安装Linux包的方法——以sklearn为例 https://pypi.org/project/scikit-learn

怎么快速卸载office365

怎么快速卸载office365 根据官网提供的两种解决方案即点即用或MSIMicrosoft Store 根据官网提供的两种解决方案 官网地址&#xff1a;https://support.microsoft.com/zh-cn/office/%E4%BB%8E-pc-%E5%8D%B8%E8%BD%BD-office-9dd49b83-264a-477a-8fcc-2fdf5dbf61d8#OfficeVersio…