CHHHCHHOH 's BLOG

寒假个人挑战赛 when they cry 2 wp

解法一

根据解压后的cry-0.0.1-SNAPSHOT.jar可以得到如下目录结构


其中Controller如下

就是一个明显的jndi注入,题目用的是jdk8u111,应该rmi和ldap都可以,不过ldap比较麻烦,题目里的localhost:9999/remoteObj也是一个rmi服务端
所以我们就建一个rmi恶意服务端来lookup我们的恶意代码,lookup里的详细过程本来博客里有写,但是博客倒退了两个月,所以也没了,我自己也忘了。
先写我们要加载的恶意Class文件,我写的是反弹shell的恶意命令,记得要TestRef要放在软件包外面,不然等会客户端加载我们的这个Class文件会出错

把恶意的TestRef.class放到服务器上,用python起个服务,因为题目的客户端会通过这个url进行加载

然后就是写一个恶意的服务端并绑定一个remoteObj,也要放在包外,先创建一个注册中心,然后绑定python服务器下的TestRef.class

其中System.setProperty("java.rmi.server.hostname","124.221.19.214");这一句很重要。如何不写的话,host会解析错误。(按照我的理解,可能是客户端去lookup服务端的时候,服务端返回的是localhost,而客户端没有解析成你的vps地址而是直接为localhost)具体看这里
然后我们把这个恶意服务端的Class文件也放到我们的vps上运行

再监听我们反弹shell的端口

然后传evil的值即可

成功去加载我们的TestRef.class

成功弹shell

解法二

不过,其实网上都有现成的工具,直接用就可以了。
先输入要执行的命令,然后一个个试就可以了


用jdk1.8的payload就可以了

成功得到flag

复现环境

源码下载,可以自己在本地搭docker环境

添加新评论