我们提供安全,免费的手游软件下载!
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的反序列化功能来执行一系列恶意操作。
package com.example.kryo;
// ...(代码略)
分析一下链子的流程,在
toMessage
处打个断点,进入
decode
方法,触发Kryo的
readObject
,进入
MapSerializer
的
read
方法。这个map是我们的恶意map,通过触发equals方法来触发我们之后一系列的链子。
到此为止...
热门资讯