java反序列化-cc2+cc4+cc5+cc7
这里的话是导入cc4的maven依赖
CC4
这里cc4和前面的不同是在调用transform
方法的不同
然后就是接着找谁能调用这个compare
方法了
根据发现这条链子的作者写的文章来看
入口点是PriorityQueue
这个类
然后就到heapify()
然后接着是siftDown
函数
然后接着是siftDownUsingComparator
函数
这里的话就和上面的方法对应上了
这里的话都是在PriorityQueue
这个类里边进行调用那么因为comparator
参数可控,所以就可以直接调用TransformingComparator.compare()
方法了,然后就可以调用这个方法里边的transform
方法了
最终目的都是为了调用到ChainedTransformer.transform
方法
这里的话就会有疑问,就是为什么这里的链子在cc3里不能用,PriorityQueue
是jdk里的类,那么出问题的肯定不是他,而是TransformingComparator
这个类的问题
就是因为cc3里的这个类没有继承serialize
所以就不能进行序列化操作,所以问题就出现在这里了
这里因为啥设的这些参数我这里就不写了 视频这里有讲
接下来就懒得跟了,就是修改调用transform
方法的变式罢了
就是跟着这张图片来找就行了
cc链子可以用很多种方法来互相组合来进行调用,就是可以用执行代码和调用transform
的方法来进行排列组合掉用
理论上应该只有1和3受jdk版本影响
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 ke1nys`Blog!