【BUUCTF】Easy Java
題目來源
收錄於:BUUCTF RoarCTF 2019
題目描述
經典登入框
不過SQL隱碼攻擊、目錄掃描都沒有發現
題解
點選頁面的 help
跳轉到/Download
路徑下,但是並沒有得到其他資訊。
這裡我們改變請求方式為 POST即可下載檔案help.docx
但是開啟help.docx
並沒有得到有用的資訊
這裡補充一下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
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
舉例:
/Index
頁面對應的後端程式路徑為/WEB-INF/classes/com/wm/ctf/IndexController.class
可以看到/Flag
對應的路徑為/WEB-INF/classes/com/wm/ctf/FlagController.class
下載該檔案
該檔案是編譯後的JAVA程式,因此我們可以使用JAVA線上反編譯網站對其反編譯,得到原始碼
顯然這是一個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:資料庫配置檔案