1. 程式人生 > 實用技巧 >[RoarCTF 2019]Easy Java

[RoarCTF 2019]Easy Java

點選介面上的help

通過URL filename引數發現疑似任意檔案下載漏洞

但是用get的方式無法下載成功,顯示檔案沒有找到異常,可以嘗試使用post的方式下載檔案,發現成功下載檔案

我們可以直接下載WEB-INF/web.xml配置檔案,WEB-INF資料夾下的檔案是不能被直接訪問到的,通常是用來儲存重要的配置檔案等

這裡參考了一下其他大佬寫的部落格有關於WEB-INF的

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檔案,推斷class檔案的路徑,最後直接class檔案,在通過反編譯class檔案,得到網站原始碼

WEB-INF/web.xml

 1 <?xml version="1.0" encoding="UTF-8"
?> 2 <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" 5 version="4.0"> 6 7 <welcome-file-list> 8 <
welcome-file>Index</welcome-file> 9 </welcome-file-list> 10 11 <servlet> 12 <servlet-name>IndexController</servlet-name> 13 <servlet-class>com.wm.ctf.IndexController</servlet-class> 14 </servlet> 15 <servlet-mapping> 16 <servlet-name>IndexController</servlet-name> 17 <url-pattern>/Index</url-pattern> 18 </servlet-mapping> 19 20 <servlet> 21 <servlet-name>LoginController</servlet-name> 22 <servlet-class>com.wm.ctf.LoginController</servlet-class> 23 </servlet> 24 <servlet-mapping> 25 <servlet-name>LoginController</servlet-name> 26 <url-pattern>/Login</url-pattern> 27 </servlet-mapping> 28 29 <servlet> 30 <servlet-name>DownloadController</servlet-name> 31 <servlet-class>com.wm.ctf.DownloadController</servlet-class> 32 </servlet> 33 <servlet-mapping> 34 <servlet-name>DownloadController</servlet-name> 35 <url-pattern>/Download</url-pattern> 36 </servlet-mapping> 37 38 <servlet> 39 <servlet-name>FlagController</servlet-name> 40 <servlet-class>com.wm.ctf.FlagController</servlet-class> 41 </servlet> 42 <servlet-mapping> 43 <servlet-name>FlagController</servlet-name> 44 <url-pattern>/Flag</url-pattern> 45 </servlet-mapping> 46 47 </web-app>

程式碼第39行發現了Flag有關的類

直接訪問URL地址發現報錯

這時想到了可以利用任意檔案下載漏洞,下載Flag類class檔案,目錄如下圖

發現一串類似base64字元,拿去解密後發現是flag