您现在的位置是:首页 >技术交流 >章节1:PHP反序列化渗透与防御网站首页技术交流

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

程序员小勇 2024-06-01 12:00:03
简介章节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

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。