CC3使用
利用链:
与CC1相比,CC3使用了InstantiateTransformer代替了InvokerTransformer
所以整体的利用链是:
1 | Gadget chain: |
前半部分跟CC1基本一样,就不看了,直接看后面,从ConstantTransformer.transform()开始

这里ConstantTransformer将TrAXFilter传递给InstantiateTransformer
然后InstantiateTransformer在transform()里面调用了newInstance(),这里的con就是TrAXFilter的构造函数

所以就调用了TrAXFilter的含参构造函数:

这里的templates参数就是上面传过来了iArgs,也就是InstantiateTransformer里面的templatesImpl,即恶意类

于是templatesImpl的newTransformer()被调用,恶意代码成功执行
