刷題[RoarCTF 2019]Easy Java


前置知識

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工程目錄結構

參考博文


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM