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

[RoarCTF 2019]Easy Java

时间:2023-09-08 12:44:43浏览次数:46  
标签:文件 RoarCTF Java WEB 目录 2019 web INF class

[RoarCTF 2019]Easy Java

打开题目发现如下界面

image-20230908113509757

根据题目的提示,这道题不太可能考sql注入,应该是与java有关,因此点击help查看信息

image-20230908113619472

这里提示java.io.FileNotFoundException:{help.docx},而url路径中的参数正是filename=help.docx

这里需要了解一个知识点:WEB-INF

WEB-INF是java的WEB应用的一个安全目录,该目录下有以下文件/目录:

1、WEB-INF/web.xml

这是web应用程序的配置文件,描述了servlet和其它应用组件配置及命名规则

2、WEB-INF/classes

该目录下包含了站点所有用到的class文件,包括servlet class和非servlet class

3、WEB-INF/lib

存放web应用需要的jar文件

4、WEB-INF/src

源码目录,按照包名结构放置各个java文件

5、WEB-INF/database.properties

数据库配置文件

6、WEB-INF/tags

存放了自定义标签文件

7、WEB-INF/jsp

jsp1.2以下版本的文件存放位置

8、WEB-INF/jsp2

存放jsp2.0以下版本的文件

9、META-INF

一个信息包

漏洞成因:

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

Nginx映射静态文件的时候,会把WEB-INF目录映射进去,但是又没有做相关的安全配置,导致了通过Nginx能够访问到Tomcat的WEB-INF目录

漏洞利用:

域名访问WEB-INF/web.xml,根据常用框架命名习惯,能够找到其他配置文件或者类的文件路径,然后dump class文件进行反编译

所以此题的做法是抓包,然后POST以下路径:

http://c42eea48-e234-4f2a-b47d-41ffe43a203c.node4.buuoj.cn:81/Download?filename=WEB-INF/web.xml

image-20230908120021358

此时我们看到了com.wm.ctf.FlagController,这是servlet的class文件

image-20230908120131369

所以此时我们尝试下访问这个文件,payload如下:

POST /Download?filename=WEB-INF/classes/com/wm/ctf/FlagController.class

返回结果如下:

image-20230908120419962

发现了一串base64的编码:

ZmxhZ3tmNzM4ZmMyNi0xODAyLTQ4MTAtYWI0NS1hOTQ2YmM2NmE5NGJ9Cg==

将其进行解码

image-20230908120522135

所以本题的flag为:flag{f738fc26-1802-4810-ab45-a946bc66a94b}

标签:文件,RoarCTF,Java,WEB,目录,2019,web,INF,class
From: https://www.cnblogs.com/h40vv3n/p/17687283.html

相关文章

  • java 支持 超大上G,多附件上传源代码
    ​ javaweb上传文件上传文件的jsp中的部分上传文件同样可以使用form表单向后端发请求,也可以使用ajax向后端发请求    1.通过form表单向后端发送请求         <formid="postForm"action="${pageContext.request.contextPath}/UploadServlet"method="post"e......
  • Java代码实现WGS84坐标转国测局坐标
    publicclassGPSToGCJ{privatestaticdoublepi=3.14159265358979324;privatestaticdoublea=6378245.0;privatestaticdoubleee=0.00669342162296594323;privatestaticbooleanoutOfChina(doublelat,doublelon){if(lon......
  • 无涯教程-JavaScript - IMARGUMENT函数
    描述IMARGUMENT函数返回参数$\theta$(theta),以弧度表示的Angular,如-$$x+yi=\left|x+yi\right|e^{i\theta}=\left|x+yi\right|(\cos\theta+\sin\theta)$$语法IMARGUMENT(inumber)争论Argument描述Required/OptionalInumberAcomplexnu......
  • 微服务启动失败,报错信息:java.lang.RuntimeException: dynamic-datasource Please chec
    【问题描述】Causedby:org.springframework.beans.factory.BeanCreationException:Errorcreatingbeanwithname'dataSource'definedinclasspathresource[com/baomidou/dynamic/datasource/spring/boot/autoconfigure/DynamicDataSourceAutoConfiguration.cl......
  • Java 中的日期时间总结
    前言大家好,我是god23bin,在日常开发中,我们经常需要处理日期和时间,日期和时间可以说是一定会用到的,现在总结下Java中日期与时间的基本概念与一些常用的用法。基本概念日期(年月日,某一天):2023-01-05时间(时分秒,可具体到某一天某一刻):18:00:00、2023-01-0518:00:00本地时间......
  • Java中PrintStream用法
    PrintStream是Java标准库中的一个类,它提供了一种方便的方法来打印输出各种数据类型的值到输出流,通常用于控制台输出或文件输出。它继承自FilterOutputStream类。在PrintStream中定义的构造方法中可以清楚的发现有一个构造方法可以直接接收OutputStream类的实例,这是因为与......
  • JavaScript—面向对象、作用域
    C#:从类继承js:从对象继承什么叫继承?模板(类)原型继承(实体)有一个对象存在,构造函数设置原型为这个对象创建出来的对象就继承与这个对象(从对象那里继承)<scripttype="text/javascript">onload=function(){varPerson=function(){this.say=fu......
  • JavaScript—BOM
    BOM是什么?BrowserObjectModel是浏览器对象模型官方:浏览器对象模型提供了独立于内容的、可以与浏览器窗口进行互动的对象结构,BOM由多个对象构成,其中代表浏览器窗口的window对象是BOM的顶层对象,其他对象都是该对象的子对象人话:用来获取或设置浏览器的相关的属性、行为,例如:新建窗口......
  • JavaScript—DOM(文档对象模型)
    目录DOM是什么?DOM有什么作用?一、事件理解事件事件怎么写(要做什么就写什么)?实战演练1、页面加载完毕以后,打印一句话2、如果有一个a标签,并给其添加一个点击事件3、事件默认处理程序二、对节点进行增删改查节点是有类型(文件节点,元素节点,属性节点)为节点添加事件的方法如何获得节点?1、获......
  • 0001Java程序设计-SSM校园快递系统的设计与实现
    摘要21世纪之后,全球信息化逐渐加快,尤其表现在近几年来电商行业的飞速发展,人们足不出户就可以买到自己想要的商品,尤其是青年大学生,追求新颖,更加乐忠于网络购物。网络购物的增加,就导致物流快递的激增。学校作为大学生生活的主要场所,每天接受到的快递成百上千,在加上学生封闭集中式......