BUU38 [RoarCTF 2019]Easy Java1

发布于:2025-02-16 ⋅ 阅读:(30) ⋅ 点赞:(0)

题目: 

 点击help后,报错,表明程序在尝试访问指定文件时,该文件并不存在于指定的路径中

这里可能有以下报错原因:

  1. 权限问题
  2. 相对路径问题:如果你使用的是相对路径,程序可能会在错误的工作目录中查找文件。相对路径是相对于程序的当前工作目录的,而当前工作目录可能和你预期的不一样。

GET方法不行,用POST方法提交成功 

 下载help.docx发现并没有什么用

java配置文件 :

/WEB-INF/web.xml 

WEB-INF是java的WEB应用的安全目录,此外如果想在页面访问WEB-INF应用里面的文件,必须要通过web.xml进行相应的映射才能访问。
其中敏感目录举例:

  • /WEB-INF/web.xml:Web应用程序配置文件,描述了 servlet 和其他的应用组件配置及命名规则
  • /WEB-INF/classes/:含了站点所有用的 class 文件,包括 servlet class 和非servlet class,他们不能包含在.jar文件中,【用于存放 Web 应用中自定义的 Java 类的编译结果。当 Java 源代码被编译成字节码(.class 文件)后,通常会被放置在这个目录下,以便服务器在运行时能够找到并加载这些类。】
  • /WEB-INF/lib/:存放web应用需要的各种JAR文件,放置仅在这个应用中要求使用的jar文件,如数据库驱动jar文件
  • /WEB-INF/src/:源码目录,按照包名结构放置各个java文件
  • /WEB-INF/database.properties:数据库配置文件

发现java页面时,一般以POST请求方式访问/WEB-INF/web.xml并将其下载下来

 这里发现flag的控制类Controller

 Servlet(小服务程序)是一种在服务器端运行的 Java 程序,用于处理客户端请求并生成动态响应,FlagController 是一个 Servlet 类

<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>
  • <servlet-name> 标签:将其命名为 FlagController。这个名称主要用于在 web.xml 文件内部进行引用
  • <servlet-class> 标签:指定实现该 Servlet 功能的 Java 类的全限定名。com.wm.ctf.FlagController 表明该类位于 com.wm.ctf 包下,类名为 FlagController。在 Web 应用启动时,服务器会依据这个全限定名去加载对应的 Java 类,并将其作为 Servlet 进行管理。
  • <servlet-mapping> 标签:其作用是将 Servlet 与特定的 URL 建立关联
  • <servlet-name> 标签:这里的 FlagController 要与前面 <servlet> 标签中定义的 Servlet 名称保持一致,以此来明确要映射的是哪个 Servlet。
  • <url-pattern> 标签:指定了客户端请求的 URL 模式。这里/Flag 表示当客户端访问 http://yourserver/yourcontext/Flag 时,服务器会调用 com.wm.ctf.FlagController 类来处理该请求。

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

    /com/wm/ctf 包路径:

    这部分代表 Java 类所在的包结构,com.wm.ctf 是一个标准的 Java 包名,包名通常采用反转的域名格式,例如 com.example

    关于Java包:

    其实相当于一个文件夹的东西,Java 类所在的包结构使用点号(.)来分隔不同的层级,类似于文件系统中的路径。比如说,com.example.util.StringUtils 表示 StringUtils 类位于 com.example.util 包中。

    FlagController.class 文件:

    这是一个编译后的 Java 类文件,对应的源代码文件可能是 FlagController.java

    由于class类不能直接打开,应该用IDA打开,这里直接用记事本打开了

     发现一串base64编码

     解码后拿到flag

       

       

       


      网站公告

      今日签到

      点亮在社区的每一天
      去签到