PHP反序列化【原理+CTF实战】

序列化:将对象型数据转换成字符串 , serialize()。
反序列化顾名思义便是将字符串还原换成对象 , unserialize()。
序列化的目的是方便数据的传输和存储,在PHP中,序列化和反序列化一般用做缓存,比如session缓存,cookie等.

图片

图片

a:2:{i:0;s:5:”Ssh1y”;i:1;s:7:”Sherkey”;}

 
  1. a:array代表是数组,后面的2说明有三个属性

  2. i:代表是整型数据int,后面的0是数组下标

  3. s:代表是字符串,后面的5是因为Ssh1y长度为5

依次类推

图片

这里突然出现了 __construct这就涉及到php反序列化中的魔术方法了

图片

我们可以利用在线工具来验证下这些魔术方法

图片

图片

根据输出结果我们可以明显看到魔术方法的触发时机,这里的__sleep有个特性,如果它没有return一个值,就会返回一个N;,

图片

大致原理就是这些。接下来我们进入实战:
我们先采用从内至外的分析方法,先找代码执行点

图片

观察分析这个对象&#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值