[RoarCTF 2019]Easy Java
打开题目发现如下界面
根据题目的提示,这道题不太可能考sql注入,应该是与java有关,因此点击help查看信息
这里提示java.io.FileNotFoundException:{help.docx},而url路径中的参数正是filename=help.docx
这里需要了解一个知识点:WEB-INF
WEB-INF是java的WEB应用的一个安全目录,该目录下有以下文件/目录:
1、WEB-INF/web.xml
这是web应用程序的配置文件,描述了servlet和其它应用组件配置及命名规则
2、WEB-INF/classes
该目录下包含了站点所有用到的class文件,包括servlet class和非servlet class
3、WEB-INF/lib
存放web应用需要的jar文件
4、WEB-INF/src
源码目录,按照包名结构放置各个java文件
5、WEB-INF/database.properties
数据库配置文件
6、WEB-INF/tags
存放了自定义标签文件
7、WEB-INF/jsp
jsp1.2以下版本的文件存放位置
8、WEB-INF/jsp2
存放jsp2.0以下版本的文件
9、META-INF
一个信息包
漏洞成因:
Tomcat的WEB-INF目录,每个j2ee的web应用部署文件默认会包含这个目录。
Nginx映射静态文件的时候,会把WEB-INF目录映射进去,但是又没有做相关的安全配置,导致了通过Nginx能够访问到Tomcat的WEB-INF目录
漏洞利用:
域名访问WEB-INF/web.xml,根据常用框架命名习惯,能够找到其他配置文件或者类的文件路径,然后dump class文件进行反编译
所以此题的做法是抓包,然后POST以下路径:
http://c42eea48-e234-4f2a-b47d-41ffe43a203c.node4.buuoj.cn:81/Download?filename=WEB-INF/web.xml
此时我们看到了com.wm.ctf.FlagController,这是servlet的class文件
所以此时我们尝试下访问这个文件,payload如下:
POST /Download?filename=WEB-INF/classes/com/wm/ctf/FlagController.class
返回结果如下:
发现了一串base64的编码:
ZmxhZ3tmNzM4ZmMyNi0xODAyLTQ4MTAtYWI0NS1hOTQ2YmM2NmE5NGJ9Cg==
将其进行解码
所以本题的flag为:flag{f738fc26-1802-4810-ab45-a946bc66a94b}
标签:文件,RoarCTF,Java,WEB,目录,2019,web,INF,class From: https://www.cnblogs.com/h40vv3n/p/17687283.html