前置知識
WEB-INF/web.xml泄露

java web工程目錄結構

Servlet訪問URL映射配置
由於客戶端是通過URL地址訪問Web服務器中的資源,所以Servlet程序若想被外界訪問,必須把Servlet程序映射到一個URL地址上,這個工作在web.xml文件中使用<servlet>元素和<servlet-mapping>元素完成。<servlet>元素用於注冊Servlet,它包含有兩個主要的子元素:<servlet-name>和<servlet-class>,分別用於設置Servlet的注冊名稱和Servlet的完整類名。一個<servlet-mapping>元素用於映射一個已注冊的Servlet的一個對外訪問路徑,它包含有兩個子元素:<servlet-name>和<url-pattern>,分別用於指定Servlet的注冊名稱和Servlet的對外訪問路徑。例如:
<servlet>
<servlet-name>ServletDemo1</servlet-name>
<servlet-class>cn.itcast.ServletDemo1</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ServletDemo1</servlet-name>
<url-pattern>/ServletDemo1</url-pattern>
</servlet-mapping>
解題思路
打開網頁發現是登陸界面,有一個鏈接help。點擊發現無內容,但是從url看出是包含,可能存在文件包含漏洞

為什么這里還是無法包含出help文件,嘗試使用post提交,發現下載下了文件,但是打開沒什么東西
源碼泄露
通過post訪問web.xml

發現真的有內容,這里看到FlagController,構造其的訪問路徑
文件包含
由上面前置知識可知,通過url訪問Servlet的方式是:
找到對應文件名,然后通過這個文件名找到對應的servlet,再通過這個servlet的文件名,獲取到其具體的servlet文件。因為這個是類中的文件,所以后綴要加.class
WEB-INF/classes/com/wm/ctf/FlagController.class

觀察有一段base64加密后的字符串,解密獲得flag
總結思路
- 了解常見的java web工程目錄結構
- 了解Servlet訪問URL映射配置
知識點
- Servlet的訪問流程
- java web工程目錄結構
