Skip to content

Latest commit

 

History

History
66 lines (41 loc) · 2.86 KB

[RoarCTF 2019]Easy Java.md

File metadata and controls

66 lines (41 loc) · 2.86 KB

[RoarCTF 2019]Easy Java

知识点

javaweb

任意文件下载

反编译class文件

解题

题目是登陆页面,查看源码,发现一个连接Download?filename=help.docx,跳转到帮助文档。 点击help也可以跳转到帮助文档。 帮助文档内容为java.io.FileNotFoundException:{help.docx},是java语句,帮助文档不存在。发现报错类型为java报错信息,尝试下载java web中的信息目录,一般在WEB-INF/web.xml

先访问WEB-INF/web.xml

Easy Java image 1

WEB-INFjavaWEB应用的安全目录,此外如果想在页面访问WEB-INF应用里面的文件,必须要通过web.xml进行相应的映射才能访问。

其中敏感目录举例:

/WEB-INF/web.xmlWeb应用程序配置文件,描述了 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

image-20231112224219961

image-20231112224529720

或者下载后用jadx-gui反编译

Alt text

ZmxhZ3tjNmRkMGQ4Zi01YTQ4LTQ3MjQtYjIwOC04MGE2OTlkZmE1YWR9Cg==进行base64解码即可

参考文章