CommonsCollections7

CommonsCollections7

摘要:CC7

0x01 链子

CC7这条链子还是LazyMap链,但是入口点为HashTable的readObject。

1、看到HashTable.readObject()第215行,调用reconstitutionPut()方法,跟进。

CC71

2、第1241行,看到equals(),跟进到AbstractMapDecorator.equals()方法,再跟进到AbstractMap.equals()方法。

CC72

对LazyMap对象进行get操作,触发LazyMap链。

到此CC7分析完毕。

0x02 ysoserial源码分析

先是Transformer链

CC73

而后创建了两个LazyMap,这里之所以要创建两个是为了触发HashTable的比较,到Abstract.equals(),最后到达LazyMap链的触发点。

CC74

最后比较有意思的是lazyMap2中移除了“yy”

CC75

这是由于在操作的时候lazyMap2中多了个yy->yy的键值对:

CC76

不去掉我们的payload没法运行。


评论