[BUUOJ記錄] [RoarCTF 2019] Easy Java
阿新 • • 發佈:2021-09-09
進入題目是一個登入頁面,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