Web渗透-反序列化
概要
为了有效地存储或传递数据,同时不丟失其类型和结构,经常需要利用序列化和反序列化函数对数据进行处理。 序列化就是把一个对象变成可以传输的字符串,可以以特定的格式在进程之间跨平台、安全的通信。 反序列化函数对单一的已序列化的变量进行操作,将其转换回原来的值。 在程序执行结束时,内存数据便会立即销毁,变量所储存的数据便是内存数据,而文件、数据库是“持久数据”,因此PHP序列化就是将内存的变量数据“保存”到文件中的持久数据的过程。
PHP序列化和反序列化主要函数
PHP反序列化的主要四个函数
serialize() //将一个对象转换成一个字符串
unserialize() //将字符串还原成一个对象
json_encode() //对变量进行 JSON 编码
json_decode() //对 JSON 格式的字符串进行解码
反序列化漏洞的产生
反序列化漏洞出现得满足两个前提:
一、unserialize函数的参数可控。
二、 代码里有定义一个含有魔术方法的类,并且该方法里出现一些使用类成员变量作为参数的存在安全问题的函数
对象注入
当用户的请求在传给反序列化函数unserialize()之前没有被正确的过滤时就会产生漏洞。因为PHP允许对象序列化,攻击者就可以提交特定的序列化的字符串给一个具有该漏洞的unserialize函数,最终导致一个在该应用范围内的任意PHP对象注入。
转:https://wiki.freebuf.com/detail?tribal_id=31&camp_id=17&entry_id=17003
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
2022-11-09 python缩小放大浏览器