Ysoserial Part 1 —— 源码分析
Posted 赛博少女
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Ysoserial Part 1 —— 源码分析相关的知识,希望对你有一定的参考价值。
开个坑,还没有很整体的看过ysoerial里面的链,打算拿出点时间来看。
今天首先整体看下ysoserial的整体源码结构。大概看了下,没有对每个类进行很细致看,后面会对每个链进行逐一分析。
Ysoserial整个项目,主要包括:
1.exploit类,用于远程attack
2.payload生成类,用于根据gadget生成序列化字节码
3.辅助类,序列化、反序列化、字符串处理、反射等重复性操作封装为辅助类
4.gadget,主要定义为定义好的利用链
都知道ysoserial有两种使用方式
java -jar 执行payload文件夹中类,本地生成序列化的攻击载荷
java -cp 指定在exploit包中的主类执行,用于远程攻击 多为JRMP相关
一、本地载荷生成入口类ysoserial.GeneratePayload
二、payloads
每一个Payload实现了ysoserial.payloads.ObjectPayload接口
接口中有一个ysoserial.payloads.ObjectPayload#getObject 方法,用来返回待序列化的有效载荷对象,参数为反序列化时需要在目标执行的命令。
ObjectPayload中还有一个内部类ysoserial.payloads.ObjectPayload.Utils
getPayloadClasse方法在入口文件中用于通过传入的参数(也就是类名)获取对应的class,通过Class.forname() 实现
ysoserial.payloads.ObjectPayload.Utils#makePayloadObject,于getObject功能类似,主要在exploit执行时调用Payload时用
拿URLDNS举例,回头再看Payload类 main+getobject
PS:annotaion注解、util 封装了一些反射方法
四、参考链接
https://www.cnblogs.com/tr1ple/p/12437310.html
以上是关于Ysoserial Part 1 —— 源码分析的主要内容,如果未能解决你的问题,请参考以下文章