【BUUCTF】Easy Java

Mr_Soap發表於2024-08-13

【BUUCTF】Easy Java

題目來源

收錄於:BUUCTF  RoarCTF 2019

題目描述

經典登入框

img

不過SQL隱碼攻擊、目錄掃描都沒有發現

題解

點選頁面的 help

img

跳轉到/Download路徑下,但是並沒有得到其他資訊。
這裡我們改變請求方式為 POST即可下載檔案help.docx

img

但是開啟help.docx並沒有得到有用的資訊

img

這裡補充一下JAVA的知識點,以下內容搬運自:https://blog.csdn.net/wy_97/article/details/78165051

WEB-INF 是Java的WEB應用的安全目錄。如果想在頁面中直接訪問其中的檔案,必須透過web.xml檔案對要訪問的檔案進行相應對映才能訪問。

 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.xml

img

web.xml的內容如下

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

web.xml用於對映路徑(URI)和後端服務程式(servlet)。servlet 是經過編譯後,字尾名為.class的檔案
Index舉例:

img

/Index頁面對應的後端程式路徑為/WEB-INF/classes/com/wm/ctf/IndexController.class

可以看到/Flag對應的路徑為/WEB-INF/classes/com/wm/ctf/FlagController.class

下載該檔案

img

該檔案是編譯後的JAVA程式,因此我們可以使用JAVA線上反編譯網站對其反編譯,得到原始碼

img

顯然這是一個base64編碼的字串,解碼得到flag。

總結

WEB-INF 是Java的WEB應用的安全目錄。如果想在頁面中直接訪問其中的檔案,必須透過web.xml檔案對要訪問的檔案進行相應對映才能訪問。

 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:資料庫配置檔案