漏洞学习篇之反序列化

PHP序列化与反序列化

1序列化与反序列化答疑

什么是序列化

Serialization 序列化是将 对象 的 状态信息 转换为可以 存储 或者 传输 的 过程。在序列化期间,对象将其当前的状态写入到临时或者持久性存储区。 以后,可以通过 从存储区中读取 反序列化对象的状态,重新创建该对象

简单的讲:将PHP中的 对象、类、 数组、变量、匿名函数等,转化为字符串,方便保存到数据库或者文件中

什么是反序列化

序列化是将对象的状态信息转化为字符串存储起来。那反序列化就是将这个状态信息拿出来使用(重新再转化为对象或者其他的)

2举个小栗子

Serialize()和unserialize()函数

这两个是序列化中常用函数。

下面看一个小栗子。

<?php
$a = array('a' => 'Apple' ,'b' => 'banana' , 'c' => 'Coconut'); 
//序列化数组
$s = serialize($a);
echo $s;
//输出结果:a:3:{s:1:"a";s:5:"Apple";s:1:"b";s:6:"banana";s:1:"c";s:7:"Coconut";}
echo '<br /><br />';
 //反序列化
$o = unserialize($s);
print_r($o);
//输出结果 Array ( [a] => Apple [b] => banana [c] => Coconut ) 
?>

序列化与反序列化在PHP实现上是没有漏洞的,漏洞主要是产生在 应用程序在处理对象,魔术方法相关问题的时候出现的

当传给 unserialize()的参数可控时,此时 攻击者 提交构造的 payload 。当进行反序化的时候 就有可能触发 对象中的一些 魔术方法,造

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值