我们提供安全,免费的手游软件下载!

安卓手机游戏下载_安卓手机软件下载_安卓手机应用免费下载-先锋下载

当前位置: 主页 > 软件教程 > 软件教程

深入了解Kryo序列化/反序列化工具

来源:网络 更新时间:2024-04-15 04:30:46

Kryo是一个快速序列化/反序列化工具,依赖于字节码生成机制(底层使用了ASM库),因此在序列化速度上有一定的优势,但正因如此,其使用也只能限制在基于JVM的语言上。

Kryo序列化出的结果,是其自定义的,独有的一种格式。由于其序列化出的结果是二进制的,也即byte[],因此像redis这样可以存储二进制数据的存储引擎是可以直接将Kryo序列化出来的数据存进去。当然你也可以选择转换成String的形式存储在其他存储引擎中(性能有损耗)。

环境搭建

环境搭建可以通过以下Maven依赖进行:


    com.esotericsoftware
    kryo
    5.2.0


    org.springframework
    spring-messaging
    5.3.18


    org.springframework.integration
    spring-integration-core
    5.3.1.RELEASE


    org.javassist
    javassist
    3.28.0-GA

例题

以下是一个例题,其中漏洞点在 codecMessageConverter.toMessage 里面,并且给了一个比较明显的base64字符串。

Kyro反序列化链

以下是一个Kyro反序列化链的示例代码,该代码展示了如何利用Kyro的反序列化功能来执行一系列恶意操作。

package com.example.kryo;
// ...(代码略)

分析一下链子的流程,在 toMessage 处打个断点,进入 decode 方法,触发Kryo的 readObject ,进入 MapSerializer read 方法。这个map是我们的恶意map,通过触发equals方法来触发我们之后一系列的链子。

到此为止...