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()
被调用,恶意代码成功执行