[RoarCTF 2019]Easy Java

WEB-INF知识点#

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类名有关

举个例子
<servlet>
<servlet-name>FlagController</servlet-name>
<servlet-class>com.wm.ctf.FlagController</servlet-class>
</servlet>

servlet包含了路径信息,我们尝试包含一下FlagController所在路径,不过这次要在前面加上classes来访问来访问class文件目录(详见上面的目录结构),且文件后缀为.class

做题:

这道题主要是考查的WEB-INF泄露

通过post传参传上去:

?filename=WEB-INF/web.xml

image-20240505022346746

完成之后会自动下载文件

就可以拿到源码

找到和flag相关的部分

image-20240505022705482

访问FlagController.class访问class目录

image-20240505022936716

下载之后打开,能看到唯一一段看起来好有点正常的有点像base64编码的一段字符串

image-20240505023126334

拿到flag

image-20240505023218423