当前位置: 首页 > article >正文

BUU38 [RoarCTF 2019]Easy Java1

题目: 

 点击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

       

       

       


      http://www.kler.cn/a/550883.html

      相关文章:

    • label-studio 导入既有的yolo格式标注
    • 【嵌入式Linux应用开发基础】read函数与write函数
    • 【Rust中级教程】1.9. 所有权(简单回顾):所有权的核心思想、如何实现`Copy` trait、值的删除(丢弃)、值删除的顺序
    • 在Linux系统下修改Docker的默认存储路径
    • Vue 组件化开发——基础与实践
    • 基于 SSM 框架和 Vue 的高校共享单车管理系统设计与实现
    • 人工智能 - 主动视觉可能就是你所需要的:在双臂机器人操作中探索主动视觉
    • 如何在微信小程序中使用 Lottie 动画
    • python 脚本命令 与 lauch.json 在 参数方面的不同
    • 如何在 VS Code 中快速使用 Copilot 来辅助开发
    • APP端弱网模拟与网络测试:如何确保应用在各种网络环境下稳定运行
    • gitte远程仓库修改后,本地没有更新,本地与远程仓库不一致
    • 【Python爬虫(11)】从入门到精通:CSS选择器在Python爬虫中的深度解析(豆瓣电影实例)
    • 【git】工作场景下的 工作区 <-> 暂存区<-> 本地仓库 命令实战 具体案例
    • Kubernetes知识点总结(十)
    • Ubuntu 下 MySQL 安装与配置全攻略:从入门到精通
    • 网络安全扫描--基础篇
    • 华为云OBS配置方法
    • DeepSeek在新能源三电研发测试中的应用实践:从技术落地到效率跃迁
    • Android Studio:如何用一个store类管理事件、简化管理