CISCN 2021 总决赛 ezj4va (AspectJWeaver写字节码文件到classpath)
复现地址👉[BUUCTF在线评测 (buuoj.cn)](https://buuoj.cn/challenges#[CISCN2021 总决赛]ezj4va)
BUU上面这道题被改成加固题了,ssh连接就能拿到源码,刚开始黑盒需要访问/robots.txt,返回disable:www.zip,再访问/www.zip就能下载源码了
首先查看pom.xml依赖
<dependencies>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-core</artifactId>
<version>8.5.38</version>
</dependency>
<!-- 本地测试加的tomcat-embed-jasper,不然会报错 -->
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<version>8.5.38</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.9.5</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.72</version>
</dependency>
</dependencies>有aspectjweaver依赖,但没有CC依赖
HashMap.readObject()
HashMap.put()
HashMap.hash()
TiedMapEntry.hashCode()
TiedMapEntry.getValue()
LazyMap.get()
SimpleCache$StoreableCachingMap.put()
SimpleCache$StoreableCachingMap.writeToPath()
FileOutputStream.write()
put会触发写文件,key为文件名、value为文件内容
skus和oldCartStr均可控,分别对其反序列化得到toAdd和cart
接着遍历toAdd.skuDescribe的Map.Entry,将其键值对放入toAdd.skuDescribe
这里就能触发StorableCachingMap#put
任意写文件能做些什么?
上传JSP马?题目的配置好像不会解析JSP。。。不太懂
但题目设置了target/classes为WEB-INF/classes,可以往classpath写字节码文件,重写类的readObject方法,后面再次触发反序列化。(泰妙辣)
但如果SpringBoot生成的胖jar,这招就不管用了。可以参考这篇文章👉LandGrey's Blog


再访问/cart/query,把Cookie中的cart改成Evil序列化的结果

若题目出不了网,试试写个Filter内存马
把Evil换成下面的MyFilter即可
Last updated
Was this helpful?