[RoarCTF 2019]Easy Java(学习)

/

/Download?filename=help.docx

/Login

java实现的web服务真没接触过,这题算是学习了
查看大佬的wp发现这个filename参数实际上是要通过POST方法传递的(这也太离谱了)
filename=help.docx

/abc

服务器是tomcat
这里有一篇介绍tomcat目录结构的文章
https://www.jianshu.com/p/81ec9c51435e
访问WEB-INF/web.xml
filename=WEB-INF/web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<welcome-file-list>
<welcome-file>Index</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>IndexController</servlet-name>
<servlet-class>com.wm.ctf.IndexController</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>IndexController</servlet-name>
<url-pattern>/Index</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>LoginController</servlet-name>
<servlet-class>com.wm.ctf.LoginController</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>LoginController</servlet-name>
<url-pattern>/Login</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>DownloadController</servlet-name>
<servlet-class>com.wm.ctf.DownloadController</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>DownloadController</servlet-name>
<url-pattern>/Download</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>FlagController</servlet-name>
<servlet-class>com.wm.ctf.FlagController</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>FlagController</servlet-name>
<url-pattern>/Flag</url-pattern>
</servlet-mapping>
</web-app>
<servlet>有两个子元素:
<servlet-name>应该是用于在web.xml里面标识servlet<servlet-class>应该是用于描述servlet对应的控制器类
<servlet-mapping>有两个元素servlet-name和url-pattern,用于将特定的url路径绑定到servlet-name所指示的servlet的控制器
这道题有四个servlet,分别绑定到
- Index
- Login
- Download
- Flag
于是目的变为获得com.wm.ctf.FlagController类的内容
按照java的文件命名规则,文件名应该是com/wm/ctf/FlagController.class,而com文件夹按照tomcat的目录结构应该在WEB-INF/classes里
filename=WEB-INF/classes/com/wm/ctf/FlagController.class

filename=WEB-INF/classes/com/wm/ctf/FlagController.java
发现并不能下载.java后缀的文件,可能是想php那样直接被服务器执行了
回过头来看FlagController.class

这里有串base64编码的东西,猜测就是flag
