[BUUOJ记录] [RoarCTF 2019] Easy Java

进入题目是一个登录页面,admin@admin888弱口令进去发现没啥东西,然后注意到一个文件下载的点:


感觉可能存在任意文件读取漏洞,先尝试读取一下Java应用的配置文件WEB-INF/web.xml,直接请求发现Get方式不行,换Post就可以了:
然后得到文件内容

<?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>

顺便补一下Java Web的一些基础常识,引用王叹之师傅的总结,WEB-INF主要包含以下文件或目录:

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:数据库配置文件

WEB-INF/web.xml中我们看到有一个com.wm.ctf.FlagController包,然后我们就可以推测其class字节码文件的路径为WEB-INF/classes/com/wm/ctf/FlagController.class,因为Java中包名和类的源文件物理位置有关,包名表示目录结构,其中包名中的点代表子文件夹。
POST方法读取FlagController类的class字节码文件得到:

看到这里有一串base64密文,解码就可以得到flag。

posted @ 2021-09-08 21:57  Ye'sBlog  阅读(273)  评论(0编辑  收藏  举报