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!











