[RoarCTF 2019]Easy Java

点击界面上的help

 通过URL filename参数发现疑似任意文件下载漏洞

 但是用get的方式无法下载成功,显示文件没有找到异常,可以尝试使用post的方式下载文件,发现成功下载文件

 我们可以直接下载WEB-INF/web.xml配置文件,WEB-INF文件夹下的文件是不能被直接访问到的,通常是用来存储重要的配置文件等

 这里参考了一下其他大佬写的博客有关于WEB-INF的

WEB-INF主要包含一下文件或目录:
/WEB-INF/web.xml:Web应用程序配置文件,描述了 servlet 和其他的应用组件配置及命名规则。
/WEB-INF/classes/:含了站点所有用的 class 文件,包括 servlet class 和非servlet class,他们不能包含在 .jar文件中
/WEB-INF/lib/:存放web应用需要的各种JAR文件,放置仅在这个应用中要求使用的jar文件,如数据库驱动jar文件
/WEB-INF/src/:源码目录,按照包名结构放置各个java文件。
/WEB-INF/database.properties:数据库配置文件
漏洞检测以及利用方法:通过找到web.xml文件,推断class文件的路径,最后直接class文件,在通过反编译class文件,得到网站源码

WEB-INF/web.xml

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
 3          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4          xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
 5          version="4.0">
 6 
 7     <welcome-file-list>
 8         <welcome-file>Index</welcome-file>
 9     </welcome-file-list>
10 
11     <servlet>
12         <servlet-name>IndexController</servlet-name>
13         <servlet-class>com.wm.ctf.IndexController</servlet-class>
14     </servlet>
15     <servlet-mapping>
16         <servlet-name>IndexController</servlet-name>
17         <url-pattern>/Index</url-pattern>
18     </servlet-mapping>
19 
20     <servlet>
21         <servlet-name>LoginController</servlet-name>
22         <servlet-class>com.wm.ctf.LoginController</servlet-class>
23     </servlet>
24     <servlet-mapping>
25         <servlet-name>LoginController</servlet-name>
26         <url-pattern>/Login</url-pattern>
27     </servlet-mapping>
28 
29     <servlet>
30         <servlet-name>DownloadController</servlet-name>
31         <servlet-class>com.wm.ctf.DownloadController</servlet-class>
32     </servlet>
33     <servlet-mapping>
34         <servlet-name>DownloadController</servlet-name>
35         <url-pattern>/Download</url-pattern>
36     </servlet-mapping>
37 
38     <servlet>
39         <servlet-name>FlagController</servlet-name>
40         <servlet-class>com.wm.ctf.FlagController</servlet-class>
41     </servlet>
42     <servlet-mapping>
43         <servlet-name>FlagController</servlet-name>
44         <url-pattern>/Flag</url-pattern>
45     </servlet-mapping>
46 
47 </web-app>

代码第39行发现了Flag有关的类

直接访问URL地址发现报错

这时想到了可以利用任意文件下载漏洞,下载Flag类class文件,目录如下图

 发现一串类似base64字符,拿去解密后发现是flag

原文地址:https://www.cnblogs.com/gtx690/p/13257713.html