首页 > 编程语言 >[RoarCTF 2019]Easy Java

[RoarCTF 2019]Easy Java

时间:2024-07-30 16:50:01浏览次数:8  
标签:xml web RoarCTF Java WEB 2019 文件 INF 目录

[RoarCTF 2019]Easy Java

Step 1

点击help按钮后发现:

URL变成:
url/Download?filename=help.docx
而回显:
java.io.FileNotFoundException:{help.docx}

而当我尝试尝试POST,发现文件成功下载:

image

Step 2

发现可能的漏洞点后,结合WEB-INF相关知识(见文末)

可以下载WEB-INF/web.xml

POST参数:
filename=WEB-INF/web.xml

得到内容:

    ...
    <servlet>
        <servlet-name>FlagController</servlet-name>
        <servlet-class>com.wm.ctf.FlagController</servlet-class>
    </servlet>
    ...

于是我们可以构造

POST参数:
filename=WEB-INF/classes/com/wm/ctf/FlagController.class

得到的文件中有base64编码,解压即得到flag

WEB-INF

WEB-INF是Java的WEB应用的安全目录。所谓安全就是客户端无法访问,只有服务端可以访问的目录。 如果想在页面中直接访问其中的文件,必须通过 web.xml 文件对要访问的文件进行相应映射才能访问。

Tomcat的WEB-INF目录,每个j2ee的web应用部署文件默认包含这个目录。

Nginx在映射静态文件时,把WEB-INF目录映射进去,而又没有做Nginx的相关安全配置(或Nginx自身一些缺陷影响)。

从而导致通过Nginx访问到Tomcat的WEB-INF目录(要注意是通过Nginx,而不是Tomcat访问到的,因为Tomcat是禁止访问这个目录的)。

WEB-INF 主要包含以下文件或目录:

WEB-INF/web.xml : Web应用程序配置文件, 描述了servlet和其他的应用组件配置及命名规则.

WEB-INF/database.properties : 数据库配置文件

WEB-INF/classes/ : 一般用来存放Java类文件(.class)

WEB-INF/lib/ : 用来存放打包好的库(.jar)

WEB-INF/src/ : 用来放源代码(.asp和.php等)

漏洞成因: 通常一些web应用我们会使用多个web服务器搭配使用,解决其中的一个web服务器的性能缺陷以及做均衡负载的优点和完成一些分层结构的安全策略等。在使用这种架构的时候,由于对静态资源的目录或文件的映射配置不当,可能会引发一些的安全问题,导致web.xml等文件能够被读取。

漏洞检测以及利用方法: 通过找到web.xml文件,推断class文件的路径,最后得到class文件,再通过反编译class文件,得到网站源码。

找web.xml: 直接请求/WEB-INF/web.xml或者更换为POST请求

标签:xml,web,RoarCTF,Java,WEB,2019,文件,INF,目录
From: https://www.cnblogs.com/bolerat/p/18332853

相关文章

  • javaweb面向切面aop编程-实现自定义填充
    实现自定义填充注解@AutoFill创建annotation包,编写注解类点击查看代码/***自定义注解,用于标识某个方法需要进行功能字段自动填充处理*/@Target(ElementType.METHOD)@Retention(RetentionPolicy.RUNTIME)public@interfaceAutoFill{//数据库操作类型:UPDATEINSE......
  • java编译错误,找不到包的解决办法
    异常:D:\AC2024\20240729\delphiJIN_JAVA\JavaTest\bin\x64>javaMYclasses.JavaClassForDelphiTestExceptioninthread"main"java.lang.NoClassDefFoundError:com/sltas/front/third/util/CryptionUtilatMYclasses.JavaClassForDelphiTest.main(Jav......
  • JAVA介绍以及jdk、IDEA安装过程
    一.JavaME,JavaSE,JavaEEJavaME(MicroEdition):用途:JavaME是为嵌入式设备和移动设备(如手机、PDA)开发的版本。它专注于资源有限的设备和环境,提供了一个精简的Java运行时环境。特点:1.包含了一套精简的JavaAPI,使得开发者可以在资源受限的设备上运行Java应用程序。2.......
  • 我试图单击网站上的 java 脚本按钮,但它不起作用
    我通过lua中的这个脚本点击了按钮:functionmain(splash)splash:init_cookies(splash.args.cookies)splash.private_mode_enabled=falsesplash.images_enabled=true--Ensureimagesareloadedassert(splash:go{......
  • 在Java中利用GeoHash实现高效的‘附近xxx‘功能
    GeoHash的介绍GeoHash是一种高效的地理编码系统,它通过将地球表面划分为网格并用字母数字组合的字符串来表示每个区域。这种编码方法将二维的经纬度坐标转换为一维的字符串,使得地理位置的存储和检索变得更加简单。GeoHash的核心原理是将经纬度坐标转换为二进制,然后交替取位......
  • C++ - VS2019配置pthread线程库
    1.说明在VS里用MS编译器不能直接调用pthread库,需要先自行下载该库:http://sourceware.org/pub/pthreads-win32/pthreads-w32-2-9-1-release.zip解压后用得到的只有Pre-built.2文件夹下的文件。2.配置如下图分别配置三大项:包含目录-->...pthreads-w32-2-9-1-release\Pre-bu......
  • Java修炼 Java SE 面试题目 (简答) 2024.7.26 22:16
    目录1.基础知识2.控制流和循环3.集合框架4.异常处理5.多线程编程6.输入输出操作7.类和接口8.Lambda表达式和函数式编程9.内存管理和垃圾回收:10.Java虚拟机(JVM):1.基础知识解释Java的面向对象特性,如封装、继承和多态。Java的面向对象特性包括封装(将数据和代码封......
  • JavaScript の 闭包
    闭包概念:一个函数对周围状态的引用捆绑在一起,内层函数中访问到其外层函数的作用域(什么鸟语)简单理解就是:闭包=内层函数+外层函数的变量如functionouter(){leta=0functioninner(){a++console.log(a)}returninner}//这......
  • day11 Java基础——基本运算符
    day11Java基础——基本运算符小技巧:CTRL+D复制当前行到下一行例1:packageoperator;publicclassDemo01{publicstaticvoidmain(String[]args){//二元运算符inta=10;intb=20;intc=25;intd=25;......
  • 全网最全JAVA面试题,终于整理完了
    一、Java基础1、基础概念与常识Java语言有哪些特点?简单易学(语法简单,上手容易);面向对象(封装,继承,多态);平台无关性(Java虚拟机实现平台无关性);支持多线程(C++语言没有内置的多线程机制,因此必须调用操作系统的多线程功能来进行多线程程序设计,而Java语言却提供了多线程支持);可靠......