[网鼎杯 2020 青龙组]filejava
[网鼎杯 2020 青龙组]filejava
考点
任意文件下载
Java代码审计
blind xxe
CVE-2014-3574
wp
文件上传功能,上传之后有个文件下载功能


有文件下载,尝试下载/proc/self/cmdline,多次测试发现下载链接是../../../../../../../../../proc/self/cmdline

再读取../../../../../../../../../proc/self/environ

可以发现Tomcat的目录是/usr/local/tomcat/,可以读取Tomcat的web.xml,../../../../../../../../../usr/local/tomcat/conf/web.xml,它定义了系统的Servlet规范
然后读取web应用程序的web.xml,../../../../../../../../../usr/local/tomcat/webapps/ROOT/WEB-INF/web.xml,其中定义了web程序的Servlet规范
依次下载源码,用jd-gui反编译得到源码
ListFileServlet是获取/WEB-INF/upload目录下的文件
DownloadServlet是下载filename传入的文件,它不能是空且不包含flag字符串,然后返回文件内容
代码中对上传文件做了判断,如果文件名以excel-开头,且以xlsx作为后缀,就使用org.apache.poi.ss.usermodel.WorkbookFactory类进行操作,这里是有个cve,即CVE-2014-3574。
新建excel-test.xlsx文件,然后解压

修改[Content_Types].xml为如下内容
vps上的dtd文件如下,再监听端口
然后重新打包为xlsx文件,这里就直接右键->7z打开压缩包,再右键编辑

保存直接上传即可

小结
blind XXE
Tomcat目录结构
最后更新于