zoukankan      html  css  js  c++  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

  • 相关阅读:
    RSA加密及加签
    间隔Ns请求某函数并且有timeout
    关于Erlang中的behaviour
    Erlang&RabbitMQ服务安装配置
    java IO流详解
    Uncaught TypeError: Cannot read property 'options' of undefined
    sql server 数据修改不了的设计
    Android多点触控详解
    java实现图的遍历(深度优先遍历和广度优先遍历)
    判断输入的8个数字不是符合8X8皇后棋盘
  • 原文地址:https://www.cnblogs.com/gtx690/p/13257713.html
Copyright © 2011-2022 走看看