javaweb
任意文件下载
反编译class文件
题目是登陆页面,查看源码,发现一个连接Download?filename=help.docx
,跳转到帮助文档。
点击help也可以跳转到帮助文档。
帮助文档内容为java.io.FileNotFoundException:{help.docx}
,是java语句,帮助文档不存在。发现报错类型为java
报错信息,尝试下载java web
中的信息目录,一般在WEB-INF/web.xml
中
先访问WEB-INF/web.xml
WEB-INF
是java
的WEB
应用的安全目录,此外如果想在页面访问WEB-INF
应用里面的文件,必须要通过web.xml
进行相应的映射才能访问。
其中敏感目录举例:
/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
:数据库配置文件
简单来说,java web
是基于Tomcat
服务器搭建的,通过servlet
来开发。
狭义来说,servlet
是指Java
语言实现的一个接口。
访问方式
<servlet-class>
这个就是指向我们要注册的servlet
的类地址, 要带包路径
<servlet-mapping>
是用来配置我们注册的组件的访问路径,里面包括两个节点 一个是<servlet-name>
,这个要与前面写的servlet
一致 另一个是<url-pattern>
,配置这个组件的访问路径<servlet-name>
这个是我们要注册servlet
的名字,一般跟Servlet
类名有关举个例子 FlagController com.wm.ctf.FlagController
servlet
包含了路径信息,我们尝试包含一下FlagController
所在路径,不过这次要在前面加上classes
来访问来访问class
文件目录(详见上面的目录结构),且文件后缀为.class
首先去找WEB-INF/web.xml
需要用POST
方法(看文档也没人说为啥要改为POST
),
com.wm.ctf.FlagController
更改下载路径为WEB-INF/classes/com/wm/ctf/FlagController.class
或者下载后用jadx-gui
反编译
将ZmxhZ3tjNmRkMGQ4Zi01YTQ4LTQ3MjQtYjIwOC04MGE2OTlkZmE1YWR9Cg==
进行base64
解码即可