PHP反序列化和魔术方法

文章目录

    • 概念
    • 相关函数
    • 简单题目:
    • 注意点:
    • PHP反序列化 bug
    • PHP session 反序列化
    • phar反序列化:

概念

概念和开发一样
PHP反序列化和魔术方法_第1张图片

相关函数

PHP反序列化和魔术方法_第2张图片
PHP反序列化和魔术方法_第3张图片

这两个函数是特征之一;
序列化的含义:
PHP反序列化和魔术方法_第4张图片
o 是对象(数组反序列化的话 是 a)
4 是对象长度, 之后名字, 2 是变量个数,
s代表字符串, 3 代表个数,后面 也是 一样的。
PHP反序列化和魔术方法_第5张图片
反序列化过程中 ,可控点只有变量,函数 不可控。
局限性在于 其中的 function 函数。函数没有危害性的话 漏洞也没有,或者xss之类的。

配合魔术方法可以造成危害:
PHP反序列化和魔术方法_第6张图片
序列化的时候调用默认的方法:
PHP反序列化和魔术方法_第7张图片
关键在于下面这几个函数:
PHP反序列化和魔术方法_第8张图片

简单题目:

bugku的
题目:
PHP反序列化和魔术方法_第9张图片
hint。PHP 是这个文件 ,存在文件包含漏洞:PHP反序列化和魔术方法_第10张图片
所以包含hint进去:用PHP伪协议读取
PHP反序列化和魔术方法_第11张图片
解码:
PHP反序列化和魔术方法_第12张图片

所以自己序列化一下对象:获取 序列化之后的字符串。

PHP反序列化和魔术方法_第13张图片

题目中执行echo 之前 会执行tostring函数,

在这里插入图片描述

PHP反序列化和魔术方法_第14张图片
所以 通过 函数去 读取 flag。PHP
payload
在这里插入图片描述
PHP反序列化和魔术方法_第15张图片
用input协议
php://input 是个可以访问请求的原始数据的只读流。

php://filter 是一种元封装器, 设计用于数据流打开时的筛选过滤应用。类似 readfile()、 file() 和 file_get_contents(), 在数据流内容读取之前没有机会应用其他过滤器。
关于:
php://input,php://filter
我的理解是:两个协议都可以读文件而不执行,不过fitler 功能更多,可以编码和解码

注意点:

PHP反序列化和魔术方法_第16张图片

实战一个题目:(10:41秒 ~ )
PHP反序列化和魔术方法_第17张图片

PHP反序列化和魔术方法_第18张图片

如果在o:后面加上 +
PHP反序列化和魔术方法_第19张图片

因为+ 在url编码中 有其他作用,所以要把 + URL编码一下。
上图
能加+是因为 4 和+4 是一样的。
+4 可以绕过 正则。

PHP反序列化 bug

在这里插入图片描述
PHP反序列化和魔术方法_第20张图片
对应题目:
思路 是 直接修改o 后面代表 属性个数的数字即可。
注意 有时候要 base64 之后再传。

PHP session 反序列化

PHP bug:
PHP反序列化和魔术方法_第21张图片
eg:
PHP反序列化和魔术方法_第22张图片
PHP反序列化和魔术方法_第23张图片
PHP反序列化和魔术方法_第24张图片

bug

PHP反序列化和魔术方法_第25张图片

PHP反序列化和魔术方法_第26张图片

session 安全问题:
PHP反序列化和魔术方法_第27张图片
实战:

安恒 题目:

PHP反序列化和魔术方法_第28张图片
PHP反序列化和魔术方法_第29张图片
PHP反序列化和魔术方法_第30张图片
PHP反序列化和魔术方法_第31张图片

所以尝试去如下构造:
PHP反序列化和魔术方法_第32张图片

PHP反序列化和魔术方法_第33张图片

在这里插入图片描述

phar反序列化:

PHP反序列化和魔术方法_第34张图片

看起来 无害的函数:
PHP反序列化和魔术方法_第35张图片
PHP反序列化和魔术方法_第36张图片
这些函数 都可以~~

你可能感兴趣的:(序列化之类的漏洞)