千家信息网

PHP中session反序列化的示例分析

发表于:2025-02-01 作者:千家信息网编辑
千家信息网最后更新 2025年02月01日,小编给大家分享一下PHP中session反序列化的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!session反序列化的漏洞是由三种不同的反序列化引擎所产生的的漏洞其中ses
千家信息网最后更新 2025年02月01日PHP中session反序列化的示例分析

小编给大家分享一下PHP中session反序列化的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!

session反序列化的漏洞是由三种不同的反序列化引擎所产生的的漏洞

其中

session.serialize_handler string--定义用来序列化/反序列化的处理器名字。默认使用php

若使用如下设置:

则改变了序列化的引擎

save_path则是session的存放路径 我们可以通过改变ini_Set来查看不同引擎下的序列化的类型

三种引擎的存储格式:

php : a|s:3:"wzk";php_serialize : a:1:{s:1:"a";s:3:"wzk";}php_binary : as:3:"wzk";

漏洞产生在于

php引擎的存储格式是键名 |serialized_string,而php_serialize引擎的存储格式是serialized_string。如果程序使用两个引擎来分别处理的话就会出现问题。
session_start() 会创建新会话或者重用现有会话。 如果通过 GET 或者 POST 方式,或者使用 cookie 提交了会话 ID, 则会重用现有会话。

所以如果存在两种不同的引擎,就可以利用session_start()的自动反序列化,把我们想要传输的数据传输到服务器中:

eg:

代码1:用来保存在本地一个session

代码2:

name;    }}

用于读取session然后进行反序列化 若wakeup方法被调用则说明反序列化成功

nage =  "swaggyp";$a->age = "1111";echo serialize($a);//O:7:"student":3:{s:4:"name";N;s:3:"age";s:4:"1111";s:4:"nage";s:7:"swaggyp";}

该代码用于生成一个一个序列

参考于:

生成后,在1中传入这段序列化的值并在开头加入 | 则在第二个文件被解析的时候,就会把|后的内容直接当成一个类去解析 实现我们的目的

成功了

php 这个session.serialize_handler 将 | 后的字符串反序列化,导致产生恶意对象。

upload过程中会产生session,存在一个键值对的值为filename(可控),如果filename被我们修改为|+序列化对象字符串(特殊字符记得转义),filename |后的内容就会被认为是序列化的内容,进而反序列化产生恶意对象(实际上PHP中session是写到文件中的,我们暂且忽略这一中间步骤对此处并无影响),在对象自毁时去执行__destruct()内的语句

S E S S I O N 中 的 键 值 就 会 为 _SESSION中的键值就会为 SESSION中的键值就会为_SESSION["upload_progress_ryat"],在会话上传过程中,将对会话数据进行序列化/反序列化,序列化格式由php.ini中的session.serialize_handler选项设置。 这意味着,如果在脚本中设置了不同的serialize_handler,那么可以导致注入任意session数据

题目:

mdzz = 'phpinfo();';    }    function __destruct()    {        eval($this->mdzz);    }}if(isset($_GET['phpinfo'])){    $m = new OowoO();}else{    highlight_string(file_get_contents('index.php'));}?>

构造登录框和payload

看完了这篇文章,相信你对"PHP中session反序列化的示例分析"有了一定的了解,如果想了解更多相关知识,欢迎关注行业资讯频道,感谢各位的阅读!

序列 引擎 不同 对象 格式 代码 内容 字符 数据 漏洞 存储 示例 分析 成功 字符串 恶意 文件 篇文章 过程 传输 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 网络安全员证书在哪里报名 共享充电线软件开发有哪些公司 数据库运维的研究现状 局域网服务器架设 关于网络安全内设机构及分工 更换密钥管理服务器 长宁区参考软件开发制造价格 查看mysql服务器中数据库 杭州互联网科技产业园 数据库常用的数据结构模型有几种 支付宝软件开发工资待遇 应用为什么无法连接服务器 怎么对数据库表格的数据更新 黑客雇佣平台网络技术 创建数据库表存哪里 检查代理服务器与防火墙视频 无发访问服务器失是什么意思呀 数据挖掘对数据库技术的要求 珠海应用软件开发设计 木瓜互联网科技有限公司 单一业务服务器集群 漯河软件开发制作 联通网络技术研究院招聘电话 服务器订阅 浪潮服务器维修报价表 学习软件开发做什么好 计算机网络技术就业前景广州 sql原数据库被覆盖还原 饥荒服务器管理 镇网络安全法治宣传
0