BUUCTF : [RoarCTF 2019]Easy Java

BUUCTF : RoarCTF 2019Easy Java

本文知识点:

WEB-INF目录:WEB-INF 是Java的WEB应用的安全目录。如果想在页面中直接访问其中的文件,必须通过web.xml文件对要访问的文件进行相应映射才能访问。

  • /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:数据库配置文件

题目界面

查看源码

  • 查看源码发现这个链接
  • 访问的时候发现返回文件未找到

  • 尝试看是否是sql注入,发现不是

  • 没招了,看题解

看题解

题解中主要是讲解了WEB-INF目录下的作用(可看文章开头),只有记住了!

  1. 查看配置文件

下面配置的含义:

  1. 声明一个名为 FlagController 的 Servlet
  2. 对应的Java类是 com.wm.ctf.FlagController
xml 复制代码
<servlet>
    <servlet-name>FlagController</servlet-name>
    <servlet-class>com.wm.ctf.FlagController</servlet-class>
</servlet>

下面配置的含义:

  1. 引用上面声明的FlagController
  2. 当访问/Flag这个链接的时候,转发给Java类com.wm.ctf.FlagController
xml 复制代码
<servlet-mapping>
    <servlet-name>FlagController</servlet-name>
    <url-pattern>/Flag</url-pattern>
</servlet-mapping>

servlet中配置的java类的类名是全限定名:com.wm.ctf.FlagController

什么是全限定名:可以简单理解为他是某一个路径下,通过点.进行分隔的路径加类名。

什么意思呢? 比如com.wm.ctf.FlagController, 假设我们的某一路径在/project(某一路径)。 那这个全限定名就表示在/project/com/wm/ctf/(路径通过点.分隔)的路径下有一个名为FlagController.class的类。

  1. 尝试得到源码
  • 在这道题目中我首先尝试将filename设置为 /WEB-INF/src/com/wm/ctf/FlagController.java,但是没得到什么结果,希望懂的大佬能讲解下

  • 尝试访问他的class(字节码:可看本文后面的解释)文件,然后反编译得到源代码,如下:

  • 拷贝url
  • 浏览器中打开

这里可以简单了解下java文件的后缀:

Java 文件的两种主要格式:

文件类型 扩展名 内容 用途 可读性
源代码文件 .java 人类可读的 Java 代码 开发者编写、编辑 直接阅读
字节码文件 .class JVM 可执行的字节码 运行程序 需要反编译
  1. 反编译源码,得到flag
  • 我随便找了一个在线的反编译软件,得到.class(字节码文件)文件的反编译结果,如下:
  • base64解码得到flag
相关推荐
古法老登瞎折腾11 小时前
大数据智能运维实战(十一):运维 MCP 的工程化——权限、限流、审计与错误处理
java·大数据·运维·spring ai·mcp
智能运维指南11 小时前
研制过程“两张皮“怎么破:研制一体化支撑平台的定位、能力边界与落地前提
java·前端·人工智能·嘉为蓝鲸
yz_aiks12 小时前
Spring AI 2.1 ChatMemory 已过时用什么替代:迁移到 Session Memory 实战(JDBC 存储与会话压缩)
java·spring boot·大模型·ai agent·spring ai
金銀銅鐵12 小时前
[Java] 用 GUI 展示 EnumMap 增删键值对时的内部变化
java·后端·ai编程
学长毕设12 小时前
基于SpringBoot的上门洗车服务系统设计与实现
java·spring boot·后端
jason成都12 小时前
RTKLIB-Java 多基线联合RTK:FIX率从0%到91.5%的三层根因修复
java·gnss·rtklib·rtklib_java
鱼宵13 小时前
Stream 终端操作一次讲透:collect、count、reduce 怎么选
java·stream·终端操作
白山编程大哥13 小时前
Java 后端如何优雅地把 List 集合返回给前端
java·前端·list
Linux运维技术栈13 小时前
CVE-2026-91403 高危漏洞修复:Rocky Linux 9 多版本 JDK 环境清理实操
java·linux·运维
On The Road :13 小时前
Java 多线程详解:从入门到线程安全
java·python·安全