
0x01 Java反序列化
Java提供了一种对象序列化的机制,用一个字节序列表示一个对象,该字节包含对象的数据、对象的类型、对象的存储属性。字节序列写出到文件后,相当于可以持久报错了一个对象信息,这过程叫做序列化。序列化对象会通过ObjectOutputStream 的writeObject方法将一个对象写入到文件中。
而反序列化是使用了readObject 方法进行读取并还原成在序列化前的一个类。
这一步骤并没有什么安全问题,但是如果反序列化的数据是可控的情况下,那么我们就可以从某个输入点,输入恶意代码,再去查找在哪个点,我们的输入会被一层一层的带去到我们的触发点去,而这一步叫做寻找利用链的步骤。
1|30x02 动态调试ysoserial
至于ysoserial就不多叙述了,自行百度。
ysoserial项目地址:ysoserial
拉取项目源码,导入到IDEA中。

看到pom.xml知道该项目是个maven的项目,点击pom.xml 进行刷新,将缺少的依赖给下载下来

下载完成,直到不爆红了后,就可以开始调试ysoserial了。
先来查找一下该程序的入口点,点开pom.xml搜索mainclass就可以找到入口点的类

ctrl+左键点击跟踪进去,运行测试一下。

运行发现爆了一些错误,这里是因为我们并没有去传入值。

点击Edit configurations,设置参数

再次运行就可以看到成功执行了。

这样我们就获取到了一个序列化的数据。

我们的ysoserial就能在idea里面去运行了。
微梦
发表于 3个月前
评论列表
加载数据中...
3180386827
发表于 3个月前
具体怎么执行的我们还得去debug看。
评论列表
加载数据中...
kukugou
发表于 3个月前
触发点在hashmap的put方法,我们在put地方打一个断点
评论列表
加载数据中...
dokevike
发表于 3个月前
评论列表
加载数据中...
1649644933
发表于 3个月前
评论列表
加载数据中...
kukugou
发表于 3个月前
评论列表
加载数据中...
北巷流诗
发表于 3个月前
评论列表
加载数据中...
小新
发表于 3个月前
评论列表
加载数据中...
xiaoxiao
发表于 3个月前
评论列表
加载数据中...
13824879591
发表于 3个月前
评论列表
加载数据中...