• 刷题[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工程目录结构

    参考博文

  • 相关阅读:
    spring aop简单理解
    动态代理
    静态代理
    spring的i o c简单回顾
    java注解的概念理解
    Eclipse中配置Tomcat
    java中Optional和Stream流的部分操作
    java中的stream的Map收集器操作
    java中的二进制运算简单理解
    Class.forName和ClassLoader.loadClass区别(转)
  • 原文地址:https://www.cnblogs.com/karsa/p/13130130.html
Copyright © 2020-2023  润新知