[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