反序列化漏洞

概念

序列化( serialization ):讲数据结构、对象等状态转化成可使用的格式(一般用于:缓存、网络发送、身份信息等),以备能够被还原为原始状态;
序列化 & 反序列化功能一般用作:存储、传输;
反序列化 (unserialization) :和上方相反

什么是类:

类是有相同属性和操作的一组对象的集合;
<?php
class student{
var $a=c;
echo $a;
}
?>

什么是对象:

对象是一个信息获取信息处理描述组成的整体,是对现实世界的描述;
对象是类的实例:
<?php
class student{
var $a=c;
echo $a;
}
$z=new student();
?>
完整案例:
<?php
//创建类
class student{
public $name="zhangsan";
public $age=8;
public $sex="male";
public $bul=flase;
}
//创建对象
$Student=new student();
//序列化对象
$str=serialize($Student);
//打印
echo $str;
?>
输出结果:
O:7:"student":3:{s:4:"name";s:8:"zhangsan";s:3:"age";i:8;s:3:"sex";s:4:"male";}
O 表示 object , 数字 7 表示 ‘student’ 的长度,数字 3 表示属性数量,大括号内 {
s 表示 ‘string’ 4 表示字符串长度, ‘name’ 表示名称 }
<?php
//创建类
class student{
public $name="zhangsan";
public $age=8;
public $sex="male";
public $bur=false;
public $gir=1.111;
public $arr=array('a','b','c');
private $name2="zhangsan";
protected $name3="zhangsan";
}
//创建对象
$Student=new student();
var_dump($Student);
echo "<br>";
//序列化对象
$str=serialize($Student);
//打印
var_dump($str);
echo "<br>";
//将序列化的字符串,反序列化
$unstr=unserialize($str);
//打印
var_dump($unstr);
?>object(student)#1 (8) { ["name"]=> string(8) "zhangsan" ["age"]=> int(8)
["sex"]=> string(4) "male" ["bur"]=> bool(false) ["gir"]=> float(1.111) ["arr"]=>
array(3) { [0]=> string(1) "a" [1]=> string(1) "b" [2]=> string(1) "c" }
["name2":"student":private]=> string(8) "zhangsan" ["name3":protected]=>
string(8) "zhangsan" }
string(230) "O:7:"student":8:
{s:4:"name";s:8:"zhangsan";s:3:"age";i:8;s:3:"sex";s:4:"male";s:3:"bur";b:0;s:3:
"gir";d:1.111;s:3:"arr";a:3:
{i:0;s:1:"a";i:1;s:1:"b";i:2;s:1:"c";}s:14:"studentname2";s:8:"zhangsan";s:8:"*n
ame3";s:8:"zhangsan";}"
object(student)#2 (8) { ["name"]=> string(8) "zhangsan" ["age"]=> int(8)
["sex"]=> string(4) "male" ["bur"]=> bool(false) ["gir"]=> float(1.111) ["arr"]=>
array(3) { [0]=> string(1) "a" [1]=> string(1) "b" [2]=> string(1) "c" }
["name2":"student":private]=> string(8) "zhangsan" ["name3":protected]=>
string(8) "zhangsan" }
常见数据类型序列化后样式:
bool-------->b:value 例:s:3:"bul";b:0;=========>$bul=false
string------->s:count:value 例: s:4:"qwer";s:4:"qwer"; =========>$qwer=qwer
int---------->i:value 例:s:2:"in";i:8; ========>$in=8
Object------->O:<obj-name-length>:<obj-name>:属性数量; 例:O:3:"res":2:
array-------->a:3:{i:0;i:1;i:1;i:2;i:2;i:34}============>array(1,2,34)
private 属性序列化后格式: %00 类型 %00 成员名;
protected 属性序列化后格式: %00*%00 成员名;
public 属性无特例 ;
php7.1+ 反序列化的类属性不敏感;

魔术函数:

php 中自定的功能、方法; php 中魔术方法以 '——', 两个下划线开头,魔术函数无需调用,只需要满足特定条件即可触发;
__wakeup () ,反序列化时被执行
__sleep () ,序列化时被执行
__construct (), 对象被创建时执行
__destruct (), 对象被销毁时执行
例:
<?php
class people{
public function __sleep(){
echo "sleep";
}
public function __wakeup(){
echo "wakeup";
}
}
$People=new people();
$str=serialize($People);
$unstr=unserialize($str);
?>

反序列化+魔术函数

<?php
class pussy{
public $name='lihua';
public function __wakeup(){
eval($this->name);
}
}
$a=$_GET['a'];
unserialize($a);
?>
用户可操作参数传入序列化字符串,且被反序列化函数处理
payload:
O:5:"pussy":1:{s:4:"name";s:10:"phpinfo();";}

反序列化漏洞成因:

①有 unserialize&serialize
②魔法函数;
③用户控制输入;
php 反序列化常见于 ctf 代码审计中;
java 反序列化常见于组件、框架( weblogic shrio struct2 );

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

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

相关文章

硬件产品经理

边端协调管理平台 主页一&#xff1a;模型管理1.1 边侧模型管理 二&#xff1a;配置管理2.1 终端软件配置管理 三&#xff1a;设备管理3.1 区域位置管理3.2 工控机管理&#xff08;其实就是围绕授权&#xff09;3.3 生产设备管理3.4 设备运行管理 四&#xff1a;数据服务4.1 实…

Unity 资源 之 风格化地形纹理(Stylized Terrain Textures)免费领取

风格化地形纹理&#xff1a;Stylized Terrain Textures 前言资源包内容领取兑换码 前言 亲爱的 Unity 游戏开发者们&#xff0c;我们自豪地为大家推荐最新的每周免费资源&#xff1a;风格化地形纹理&#xff01;这些令人惊叹的纹理将为你的游戏世界带来独特而引人入胜的视觉体…

MySQL与PostgreSQL关键对比三(索引类型)

目录 索引类型 B-tree 索引 Hash 索引 Full-text 索引 GiST 索引 GIN 索引 BRIN 索引 索引创建示例 MySQL PostgreSQL 结论 以下SQL语句的执行如果需要开发工具支持&#xff0c;可以尝试使用SQLynx或Navicat来执行。 MySQL和PostgreSQL在索引方面有许多相似之处&am…

layui左侧菜单栏,鼠标悬停显示菜单文字

layui封装的左侧菜单是固定宽度的&#xff0c;且左侧菜单栏在css里改变宽度&#xff0c;效果并不是很好&#xff08;还设计头部菜单栏&#xff09;&#xff0c;如果写js来让菜单栏能够拉伸&#xff0c;也比较麻烦&#xff0c;那怎么最简单的&#xff0c;让用户看到菜单的文字呢…

释放视频潜力:Topaz Video AI for mac/win 一款全新的视频增强与修复利器

在数字时代&#xff0c;视频已经成为我们记录生活、分享经历的重要方式。然而&#xff0c;有时候我们所拍摄的视频可能并不完美&#xff0c;可能存在模糊、噪点、抖动等问题。这时候&#xff0c;就需要一款强大的视频增强和修复工具来帮助我们提升视频质量&#xff0c;让它们更…

LabVIEW与Arm控制器之间的通讯

LabVIEW是一个强大的图形化编程环境&#xff0c;广泛应用于自动化控制、数据采集和测试测量等领域。而Arm控制器则是嵌入式系统中常用的处理器架构&#xff0c;广泛用于各种控制和计算任务。将LabVIEW与Arm控制器进行通讯控制&#xff0c;可以结合二者的优势&#xff0c;实现高…

推荐系统三十六式学习笔记:原理篇.近邻推荐07|人以群分,你是什么人就看到什么世界

目录 协同过滤基于用户的协同过滤背后的思想原理实践1、构造矩阵2、相似度计算3、推荐计算4、一些改进 应用场景&#xff1a;总结 谈及推荐系统&#xff0c;不得不说大名鼎鼎的协同过滤。协同过滤的重点在于协同&#xff0c;所谓协同&#xff0c;也就是群体互帮互助&#xff0c…

大模型安全技术实践 | RAG精确应对大模型敏感问题知识幻觉难题

一、引言 在大模型的实际应用落地过程中&#xff0c;会遇到所谓的幻觉&#xff08;Hallucination&#xff09;问题。对于语言模型而言&#xff0c;当生成的文本语法正确流畅&#xff0c;但与原文不符&#xff08;Faithfulness&#xff09;或事实不符&#xff08;Factualness&a…

Ubuntu 22.04安装cuda及Pytorch教程

文章目录 1、安装显卡驱动2、安装CUDA3、安装cuDNN4、安装pyTorch5、卸载CUDA参考资料 服务器重装系统后&#xff0c;需要重新安装显卡驱动、cuda及Pytorch等&#xff0c;有些步骤容易忘记&#xff0c;这里记录一下。这里我的服务器配置以及安装版本的情况如下&#xff1a; 服…

基于简单Agent对医疗数据进行分析

数据表 供应商资格审核规定.pdf 医生名录.xlsx 历史就诊记录.xlsx 患者信息名录.xlsx 药品.xlsx 药品库存管理.xlsx 采购单位基本信息.xlsx Agent测试 模型基于ChatGPT-3.5 问题&#xff1a;帮我找出不达标的供应商 Agent分析过程 [Thought: 0] Key Concepts: - 不达标的供…

IMX6ULL kernel移植

1.环境说明 编译主机Debian 12交叉编译工具arm-none-linux-gnueabihf-gcc(gcc version 12.3.1 20230626)kernel版本lf-6.6.3-1.0.02.官方默认版本说明 默认官方版本的kernel是可以运行的,直接按照下面的命令编译即可 ###清除掉默认配置make ARCH=arm CROSS_COMPILE=arm-no…

【每日刷题】Day58

【每日刷题】Day58 &#x1f955;个人主页&#xff1a;开敲&#x1f349; &#x1f525;所属专栏&#xff1a;每日刷题&#x1f34d; &#x1f33c;文章目录&#x1f33c;​​​​​​​ 1. 3038. 相同分数的最大操作数目 I - 力扣&#xff08;LeetCode&#xff09; 2. 868. …

男士内裤怎么选?五款不能错过的超舒适男士内裤

在快节奏的现代都市生活中&#xff0c;男士们同样需要关注内在穿搭的品质与舒适度。一条优质贴身的男士内裤&#xff0c;不仅是日常穿着的舒适保障&#xff0c;更是展现男性精致品味的秘密武器。今天&#xff0c;就让我们一同探讨如何挑选出最适合自己的男士内裤&#xff0c;并…

从云端到终端:青犀视频汇聚/融合平台的视频接入方式与场景应用

一、青犀视频汇聚/融合平台 由TSINGSEE青犀视频研发的EasyCVR智能融合/视频汇聚平台基于“云-边-端”一体化架构&#xff0c;支持视频汇聚、融合管理&#xff0c;兼容多协议&#xff08;GA/T1400/GB28181/Onvif/RTSP/RTMP/海康SDK/Ehome/大华SDK/宇视SDK等&#xff09;、多类型…

数据结构——哈希表、哈希桶

哈希概念 顺序结构以及平衡树中&#xff0c;元素关键码与其存储位置之间没有对应的关系&#xff0c;因此在查找一个元素时&#xff0c;必须要经过关键码的多次比较&#xff0c;顺序查找时间复杂度为O(N),平衡树中为树的高度,即O(logN),搜索的效率取决于搜索过程种元素的比较次…

新能源集成灶怎么样?不需要燃料就能生火,是真的吗?

在当今的厨房电器领域&#xff0c;集成灶的出现引起了不少网友的广泛关注。这不&#xff0c;就在刚刚人民日报发布的一篇名为《中国新能源产业发展是全球性贡献和机遇》报道中提到&#xff1a;中国新能源产品销量突破万亿大关&#xff0c;中国新能源技术全球领先。从这样一份亮…

windows10系统下替换、修改jar中的文件并重新打包成jar文件然后运行

1、问题来源 maven打包部署之后发现页面上内容显示不正确&#xff0c;究其原因发现是打包之后activiti内某些文件内容错误所致&#xff0c;故想到临时解决方案&#xff1a;先打包完&#xff0c;再修改jar中的activiti文件&#xff0c;再重新打包 2、操作步骤 2.1、解压jar包 …

【Test 58】 Qt信号与槽机制! 高频的Qt 知识点!

文章目录 1.Qt 信号与槽机制原理&#xff08;Signal & Slot&#xff09;2. QObject 类 connect 的介绍3. 信号与槽机制连接方式4. 信号和槽机制优势及其效率&#xff1a;5. 信号与槽机制应用 1.Qt 信号与槽机制原理&#xff08;Signal & Slot&#xff09; &#x1f42…

个人vsCode配置文件<setting.js>

个人vsCode配置文件setting.js 快速打开1、使用快捷键 CtrlShiftP &#xff0c;然后搜索setting2、手动 自用配置 快速打开 1、使用快捷键 CtrlShiftP &#xff0c;然后搜索setting 2、手动 自用配置 {"terminal.integrated.profiles.windows": {"PowerShell&…

Spring的Controller是单例还是多例,如何保证线程安全的。

目录 验证是否单例&#xff08;默认单例&#xff09; 多例测试 单例对象成员变量测试 多例对象成员变量测试 解决方案 结论&#xff1a; 补充说明 答案&#xff1a;controller默认是单例的&#xff0c;不要使用非静态的成员变量&#xff0c;否则会发生数据逻辑混乱。 正…