[RoarCTF 2019]Easy Java

[RoarCTF 2019]Easy Java

打开题目发现如下界面

image-20230908113509757

根据题目的提示,这道题不太可能考sql注入,应该是与java有关,因此点击help查看信息

image-20230908113619472

这里提示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

image-20230908120021358

此时我们看到了com.wm.ctf.FlagController,这是servlet的class文件

image-20230908120131369

所以此时我们尝试下访问这个文件,payload如下:

POST /Download?filename=WEB-INF/classes/com/wm/ctf/FlagController.class

返回结果如下:

image-20230908120419962

发现了一串base64的编码:

ZmxhZ3tmNzM4ZmMyNi0xODAyLTQ4MTAtYWI0NS1hOTQ2YmM2NmE5NGJ9Cg==

将其进行解码

image-20230908120522135

所以本题的flag为:flag{f738fc26-1802-4810-ab45-a946bc66a94b}

posted @ 2023-09-08 12:36  h40vv3n  阅读(55)  评论(0编辑  收藏  举报