1. 程式人生 > 其它 >[BUUOJ記錄] [RoarCTF 2019] Easy Java

[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。

[ * ]部落格中轉載的文章均已標明出處與來源,若無意產生侵權行為深表歉意,需要刪除或更改請聯絡博主: 2245998470[at]qq.com