网鼎杯java_file writeup

原题是一道Java文件上传的题目,首先通过上传文件,无法进行正常getshell,在下载处我们通过FUZZ得出任意文件读取漏洞:


1.jpg

通过查看不存在得文件得出该站点为docker容器+tomcat中间件+file_in_java站点:


2.jpg

Fuzz得出tomcat网站对应的服务器绝对路径。使用usr/local/apache进行fuzz测试:
3.jpg

测试对应的tomcat容器:


4.jpg

构造读取tomcat下的file_in_java配置文件:
http://xxxxxxxxxxxxxxxx.cloudgame2.ichunqiu.com:8080/file_in_java/DownloadServlet?filename=../../../../../../../../../../../../../../../../../../../../../../../usr/local/tomcat/webapps/file_in_java/WEB-INF/web.xml
5.jpg

利用思路一:下载对应的servlet类进行反编译分析源码。

http://xxxxxxxxxxxxxxxxxxxx.cloudgame1.ichunqiu.com:8080/file_in_java/DownloadServlet?filename=../../../../../../../../../../../../../../../../../../../../../../../usr/local/tomcat/webapps/file_in_java/WEB-INF/classes/cn/abc/servlet/UploadServlet.class
6.jpg

思路二:直接根据文件名fuzz得出对应的war包分析:


7.jpg

分析对应的uploadservlet下的上传方法,得出为上传的文件名前缀为excel-,后缀为xlsx。利用xlsx格式的xxe文件带外读取。


8.jpg

制作xlsx格式的XXE读取得出flag:flag{e5d65f91-abb8-4e8d-xxxxxxxxxxx}

你可能感兴趣的:(网鼎杯java_file writeup)