章节1:PHP反序列化渗透与防御

章节1:PHP反序列化渗透与防御

章节1:PHP反序列化渗透与防御

1.1-PHP类与对象

类Class

一个共享相同结构和行为的对象的集合。

在这里插入图片描述

对象Object

类的实例

在这里插入图片描述

在这里插入图片描述

1.2-PHP Magic函数

Magic Methods

https://www.php.net/__sleep

在这里插入图片描述

函数作用

函数 作用
__construct 当一个对象创建时被调用
__destruct 当一个对象销毁时被调用
__toString 当一个对象被当作一个字符串使用
__sleep 在对象被序列化之前运行
__wakeup 在对象被反序列化之后被调用
__serialize() 对对象调用serialize()方法,PHP 7.4.0起
__unserialize() 对对象调用unserialize()方法,PHP 7.4.0起
__call() 在对象上下文中调用不可访问的方法时触发
__callStatic() 在静态上下文中调用不可访问的方法时触发
__get() 用于从不可访问的属性读取数据
__set() 用于将数据写入不可访问的属性
__isset() 在不可访问的属性上调用isset()或empty()触发
__unset() 在不可访问的属性上使用unset()触发
__invoke() 当脚本尝试将对象调用为函数时触发

可以了解下最后三个方法。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

1.3-PHP序列化与反序列化

序列化和反序列化

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

其他序列化格式

json字符串 json_encode

xml字符串 wddx_serialize_value

二进制格式

字节数组

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

https://www.bejson.com/otherformat/xmlsort/

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

var_dump:打印变量的相关信息

在这里插入图片描述

在这里插入图片描述

反序列化:注意

  1. 如果传递的字符串不可以序列化,则返回 FALSE

    在这里插入图片描述

  2. 如果对象没有预定义,反序列化得到的对象是__PHP_Incomplete_Class

    在这里插入图片描述

    在这里插入图片描述

作用

  1. 传输对象
  2. 用作缓存(Cookie、Session)

反序列化与Magic函数

__wakeup

__unserialize() (PHP 7.4.0)

如果类中同时定义了 __unserialize() 和 __wakeup() 两个魔术方法,则只有 __unserialize() 方法会生效,__wakeup() 方法会被忽略。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

1.4-反序列化漏洞的出现

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

反序列化漏洞

  1. unserialize函数的参数可控,比如通过GET请求传参(漏洞触发点)
  2. 脚本中定义了有Magic方法,方法里面有向php文件做读写数据或者执行命令的操作,比如__destruct()、unlink()
  3. 操作的内容需要有对象的成员变量的值,比如filename

常见利用函数

类别 函数
命令执行 exec()
passthru()
popen()
system()
……
文件操作 file_put_contents()
file_get_contents()
unlink
……

1.5-CTF题目分析

题目地址

https://adworld.xctf.org.cn/challenges/list

类型:Web

难度:1

unserialize3

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

1.6-typecho反序列化漏洞

题目地址

https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-18753

下载地址

https://github.com/typecho/typecho/releases/tag/v1.0-14.10.10-release

Source code(zip)

PHP版本: 5.4.5nts(PHPStudy)

在数据库新建一个库,命名为typecho

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

                       

点击阅读全文

上一篇 2023年 6月 11日 am10:21
下一篇 2023年 6月 11日 am10:24