jdk1.7
Commons Collections 3.1
先把poc放出來。
CC5中用了CC1的後半段鍊,在CC1中已經提到了,隻要調用了lazyMap的get方法就可以。
在CC5中使用的是TiedMapEntry的toString方法來調用get方法的。

而this.map在執行個體化對象的時候就可以設定值。
那麼我們現在隻需要找到哪個類的readObject方法中有調用toString方法。
我們找到了BadAttributeValueExpException#readObject。
如下圖,我們看到調用了valObj的tostring方法。而valObj是val屬性的值。
val屬性定義如下
我們可通過反射設定val的值即可。
為什麼不直接new一個BadAttributeValueExpException對象,如下圖。在構造方法中,直接調用了val的toString方法,直接進行了rce。是以通過反射設定val值