反序列化漏洞学习笔记(一)

一、php面向对象

学习自bilibili的up主橙子科技工作室,讲的很好,有需要可自行查找
在这里插入图片描述

1、php面向对象基础知识

面向过程编程: 1.强调的是功能行为,以函数为最小单位,考虑怎样去做; 2.易于实现,执行效率高; 3.可维护性比较差,可扩展性差。

面向对象编程: 1.强调的是事物对象,以类/对象为最小单位,考虑谁来做; 2.易于扩展,可维护性和可扩展性都比较好; 3.执行效率低; 4.面向对象具有继承、封装、多态等特性,能够更好地应对需求的变化。

总的来说,面向过程的编程思想是以过程或者功能作为切入点进行编程,侧重于描述步骤和流程,因此一般适用于简单的小型项目。而面向对象编程是以对象为中心进行编程,将数据和操作封装在一起,更加适用于大型复杂项目。
在这里插入图片描述在这里插入图片描述类里的方法调用类里面的某个属性时要用

$this->

在这里插入图片描述在这里插入图片描述
 在这里插入图片描述在这里插入图片描述在这里插入图片描述

2、序列化基础知识

(1)、序列化的作用

方便存储和传输
将对象或者数组转化为可储存/传输的字符串。

在这里插入图片描述在这里插入图片描述

(2)、序列化之后的表达方式/格式

在这里插入图片描述在这里插入图片描述

(3)、对象序列化的详细讲解

只序列化成员变量,不序列化成员函数
在这里插入图片描述

序列化的时候进行url编码,
在这里插入图片描述

在这里插入图片描述在这里插入图片描述序列化的对象一实例化了另一个对象二,最后序列化出来的结果会是
序列化的对象包含了序列化的对象
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

3、反序列化

(1)、反序列化的特性

1.反序列化之后的内容为一个对象;
2.反序列化生成的对象里的值,由反序列化里的值提供;与原有类预定义的值无关;
3.反序列化不触发类的成员方法;需要调用方法后才能触发;

(2)、反序列化的作用

在这里插入图片描述
代码演示: 在这里插入图片描述

4、反序列化漏洞

在这里插入图片描述在这里插入图片描述在这里插入图片描述

(1)、魔术方法

什么是魔术方法

一个预定义好的,在特定情况下自动触发的行为方法。

魔术方法的作用

反序列化漏洞的成因:

反序列化过程中,unserialize()接收的值(字符串)可控;
通过更改这个值(字符串),得到所需要的代码;
通过调用方法,触发代码执行。

魔术方法在特定条件下自动调用相关方法,最终导致触发代码。
在这里插入图片描述在这里插入图片描述

_construct()

实例化对象时触发
在这里插入图片描述

_destruct()

两次触发,在实例化对象时和反序列化时
在这里插入图片描述在这里插入图片描述

_sleep()

序列化serialize()函数会检查类中是否存在一个魔术方法_sleep()如果存在,该方法会先被调用,然后才执行序列化操作。
此功能可以用于清理对象,并返回一个包含对象中所有应被序列化的变量名称的数组。
如果该方法未返回任何内容,则NULL被序列化,并产生一个E_NOTICE级别的错误。

触发时机:serialize之前
在这里插入图片描述

_wakeup()

和sleep()相反,触发时机在反序列化之前

unserialize()会检查是否存在一个_wakeup()方法。
如果存在,则会先调用_wakeup()方法,预先准备对象需要的资源。
预先准备对象资源,返回void,常用于反序列化操作中重新建立数据库连接或执行其他初始化操作。

在这里插入图片描述在这里插入图片描述
在这里插入图片描述

_tostring()

表达方式错误导致魔术方法被触发
把对象当成字符串输出时会触发
常用于构造POP链
在这里插入图片描述

_invoke()

把对象当成函数调用时触发
在这里插入图片描述

在这里插入图片描述

_call()

在这里插入图片描述

_callStatic()

在这里插入图片描述

_get()

在这里插入图片描述

_set()

在这里插入图片描述

_isset()

在这里插入图片描述

_unset()

在这里插入图片描述

_clone()

在这里插入图片描述
在这里插入图片描述在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值