代码编织梦想

该漏洞一般只能在代码审计中发现,很难再黑盒测试中发现

序列化serialize():把一个对象变成可以传输的字符串

class S{
        public $test="pikachu";
    }
    $s=new S(); //创建一个对象
    serialize($s); //把这个对象进行序列化
    序列化后得到的结果是这个样子的:O:1:"S":1:{s:4:"test";s:7:"pikachu";}
        O:代表object //代表是一个对象
        1:代表对象名字长度为一个字符 
        S:对象的名称 S
        1:代表对象里面有一个变量
        s:数据类型 string
        4:变量名称的长度
        test:变量名称
        s:数据类型
        7:变量值的长度
        pikachu:变量值

反序列化unserialize():把被序列化的字符串还原为对象,然后在接下来的代码中继续使用

$u=unserialize("O:1:"S":1:{s:4:"test";s:7:"pikachu";}");
    echo $u->test; //得到的结果为pikachu

序列化与反序列化本身没有问题,但是如果反序列化的内容是用户可以控制的,且后台不正当的使用了PHP中的魔法函数,就会出现漏洞

 常见的几个魔法函数:
        __construct()当一个对象创建时被调用

        __destruct()当一个对象销毁时被调用

        __toString()当一个对象被当作一个字符串使用

        __sleep() 在对象在被序列化之前运行

        __wakeup将在序列化之后立即被调用

        漏洞举例:

        class S{
            var $test = "pikachu";
            function __destruct(){
                echo $this->test;
            }
        }
        $s = $_GET['test'];
        @$unser = unserialize($a);

        payload:O:1:"S":1:{s:4:"test";s:29:"<script>alert('xss')</script>";} //恶意序列化代码
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_49015005/article/details/118420213

PHP反序列化漏洞-CTF实例-爱代码爱编程

PHP反序列化漏洞-CTF PHP反序列化漏洞-FIRST PHP反序列化漏洞-SECOND 1.CTF实例 CTF实例源码:strchr() 函数: 搜索字符串在另一字符串中的第一次出现,返回字符串的其余部分(从匹配点)。如果未找到所搜索的字符串,则返回 FALSE。dirname(__FILE__)函数:表示当前文件绝对路径 //10.php

PHP反序列化漏洞——漏洞原理及防御措施-爱代码爱编程

序列化   将对象转换成字符串 反序列化 将特定格式的字符串转换成对象什么是反序列化漏洞 PHP反序列化漏洞也叫PHP对象注入,是一个非常常见的漏洞,这种类型的漏洞虽然有些难以利用,但一旦利用成功就会造成非常危险的后果。漏洞的形成的根本原因是程序没有对用户输入的反序列化字符串进行检测,导致反序列化过程

PHP反序列化漏洞研究及原理-爱代码爱编程

前言: 反序列化是OWASP 2017中的一个比较大威胁的漏洞 而且一般安全类的问代码级的漏洞一般会问到这个,所以记录一下。 什么是反序列化? 首先引进两个函数,serialize(序列化函数)和unserialize(反序列化函数) 序列化与反序列化作用: 序列化: 对象转换为字符串的过程 这么讲可能有点晦涩难懂,上代码,看注释应该能看懂 (

php序列化和反序列化&魔术方法-爱代码爱编程

前言 可能会需要有类的知识但这里不多赘述 序列化 在PHP中,序列化用于存储或传递 PHP 的值的过程中,同时不丢失其类型和结构。 内存数据——稍纵即逝,不可持久化。 变量所储存的数据,即内存数据,而文件是持久数据。 l 序列化: 序列化就是将内存中的变量数据,保存为文件中的持久数据的过程。将内存变成文件。 反序列化: 反序列化就是将序列化后存储到文

PHP反序列化-爱代码爱编程

**PHP反序列化漏洞** 一、序列化定义:序列化(serialization)在计算机科学的数据处理中,是指将数据结构或对象状态转换成可取用格式(例如存成文件,存于缓冲,或经由网络中发送),以留待后续在相同或另一台计算机环境中,能恢复原先状态的过程。概念很容易理解,其实就是将数据转化成一种

魔术方法的触发在php反序列化中的应用-爱代码爱编程

源码: <?php show_source(__FILE__); class CDUTSEC1{ public $file; public $function; function __construct($file, $function) { $this->file = $file;

php反序列漏洞 实例_PHP反序列化漏洞原理及示例-爱代码爱编程

文章目录 序列化与反序列化 PHP魔法函数 反序列化漏洞 简介 原理 触发条件 示例 PHP反序列化 PHP反序列化 序列化与反序列化 序列化说通俗点就是把一个对象变成可以传输的字符串。 序列化过程中还会对不同属性的变量进行不同方式的变化 public的属性在序列化时,直接显示属性名 protected的属性在序列化时,会在

php+反序列化代码执行漏洞,PHP反序列化漏洞-爱代码爱编程

0x001 漏洞产生原理 在反序列化的过程中自动触发了某些魔术方法。未对用户输入的序列化字符串进行检测,导致攻击者可以控制反序列化过程,从而导致XSS、代码执行、文件写入、文件读取等不可控后果。 0x002 漏洞触发条件 一般只能通过代码审计的方式挖掘该漏洞,寻找代码中unserialize()函数的变量可控,且PHP文件代码中存在可利用的类,同

php 反序列化漏洞,PHP反序列化漏洞详解-爱代码爱编程

最近和小伙伴们一起研究了下PHP反序列化漏洞,突发奇想,利用反序列化漏洞写一个一句话木马效果应该蛮不错的。本文主要和大家分享PHP反序列化漏洞详解,希望能帮助到大家。 0x01 PHP反序 说起PHP反序列化,那必须先简单说一下PHP的序列化。PHP序列化是将一个对象、数组、字符串等转化为字节流便于传输,比如跨脚本等。而PHP反序列化是将序列化之后

php反序列化漏洞条件,PHP反序列化漏洞总结-爱代码爱编程

写在前边 做了不少PHP反序列化的题了,是时候把坑给填上了。参考了一些大佬们的博客,自己再做一下总结 1.面向对象 2.PHP序列化和反序列化 3.PHP反序列化漏洞实例 1.面向对象 在了解序列化和反序列化之前,先简单了解一下PHP的面向对象。 万物皆可对象。根据官方手册,PHP中,以关键字class定义一个类,一个类可以包含有属于自己

php的反序列化漏洞扫描,浅析php反序列化漏洞-爱代码爱编程

反序列化在很多语言中都比较常见,下面简单介绍php的反序列化漏洞(对象注入)。 0x00.是什么 ——what php反序列化漏洞,又叫对象注入。 涉及到的是php中的两个函数:unsearialize()与serialize()。后者为将一个对象或者数组转换为字符串以便保存,前者则将尝试将字符串恢复为对象或者数组。 关于这个漏洞大家平时可能

详解PHP反序列化漏洞-爱代码爱编程

详解PHP反序列化漏洞 序列化与反序列化定义常见使用情况常见的序列化格式反序列化中常见的魔术方法反序列化绕过protected和private绕过__wakeup绕过(CVE-2016-7124)引用利用16进制绕过字符过滤同名方法的利用绕过部分正则字符逃逸字符增多字符减少对象注入session反序列化漏洞session定义PHP session工