当前位置: 首页 > news >正文

-PHP 反序列化POP 链构造魔术方法流程漏洞触发条件属性修改

1 、什么是反序列化操作? - 类型转换
- PHP & JavaEE & Python (见图)
序列化:对象转换为数组或字符串等格式
反序列化:将数组或字符串等格式转换成对象
serialize() // 将对象转换成一个字符串
unserialize() // 将字符串还原成一个对象
2 、常见 PHP 魔术方法? - 对象逻辑(见图)
__construct(): // 当对象 new 的时候会自动调用
__destruct() // 当对象被销毁时会被自动调用
__sleep(): //serialize() 执行时被自动调用
__wakeup(): //unserialize() 时会被自动调用
__invoke(): // 当尝试以调用函数的方法调用一个对象时会被自动调用
__toString(): // 把类当作字符串使用时触发
__call(): // 调用某个方法 , 若方法存在 , 则调用 ; 若不存在 , 则会去调用 __call
数。
__callStatic(): // 在静态上下文中调用不可访问的方法时触发
__get(): // 读取对象属性时 , 若存在 , 则返回属性值 ; 若不存在,则会调用 __get 函数
__set(): // 设置对象的属性时 , 若属性存在 , 则赋值 ; 若不存在 , 则调用 __set 函数。
__isset(): // 在不可访问的属性上调用 isset() empty() 触发
__unset(): // 在不可访问的属性上使用 unset() 时触发
__set_state() ,调用 var_export() 导出类时,此静态方法会被调用
__clone() ,当对象复制完成时调用
__autoload() ,尝试加载未定义的类
__debugInfo() ,打印所需调试信息
3 、为什么会出现安全漏洞?
原理:未对用户输入的序列化字符串进行检测,导致攻击者可以控制反序列化过程,从而
导致代码执行, SQL 注入,目录遍历等不可控后果。在反序列化的过程中自动触发了某些
魔术方法。当进行反序列化的时候就有可能会触发对象中的一些魔术方法。
<?php
class B{
public $cmd='ipconfig';
public function __destruct(){
system($this->cmd);
}
}

相关文章:

  • Linux 管道理解
  • cf | Common Multiple
  • 来访登记二维码生成
  • deepseek-php-client开源程序是强力维护的 PHP API 客户端,允许您与 deepseek API 交互
  • Linux ———— 编译器g++/gcc
  • 【3.1】pod详解——Pod的结构
  • 32单片机——GPIO寄存器
  • Java 异常 SSLException: fatal alert: protocol_version 全解析与解决方案
  • Python内置函数-aiter()
  • URI、URL与URN详解概念介绍
  • Python内置函数---bool()
  • 【Deepseek学习大模型推理】MOONCAKE: A KVCache-centric Architecture调度(中)调度
  • gem5教程第六章 为ARM扩展gem5 这也是改进gem5的一个基础
  • 深度学习--卷积神经网络调整学习率
  • java六人打分
  • SQL进阶知识:五、存储过程和函数
  • python动态注册执行action
  • 香港科技大学广州|先进材料学域博士招生宣讲会—天津大学专场
  • 精益数据分析(16/126):掌握关键方法,探寻创业真谛
  • CSGO 盲盒开箱系统技术实现深度解析
  • 神十九飞船已撤离空间站,计划于今日中午返回东风着陆场
  • 北京朝阳涉住宅组团地块126亿元成交
  • 黄晓丹:用“诗心”找到生存的意义
  • 海南儋州市委副书记任延新已赴市人大常委会履新
  • 幸福航空五一前三天航班取消:客服称目前是锁舱状态,无法确认何时恢复
  • 准85后青海海北州副州长、州公安局局长李贤荣赴山东临沂挂职