ScreenShot_2026-04-09_155801_217.png
本题主要需要知道java的后端文件结构
ScreenShot_2026-04-09_160244_399.png
这里的登录框首先想到会不会有sql注入,但是试过各种闭合都没用,所以尝试找别的突破口
ScreenShot_2026-04-09_160518_311.png
查看网页源代码的时候看到有一个herf跳转的链接
ScreenShot_2026-04-09_160654_990.png
发现filename参数输入的东西会被打印出来,这里首先想到的是有啥语句可以直接把flag打印出来,结果这个想法没用
后面问ai之后,结合Download文件夹下,用post请求文件就可以下载
ScreenShot_2026-04-09_161223_374.png
至于为什么下载WEB-INF/web.xml文件,主要是因为flag文件也访问过了,访问失败
又看到这个网站后端是Java,根据Tomcat的目录结构,网页目录下会有这个文件

直接打开下载的文件
ScreenShot_2026-04-09_162040_533.png

看到刚刚的Download文件夹会调用com.wm.ctf.DownloadController这里的一个类

类似的,/Flag文件夹会调用com.wm.ctf.FlagController的一个类

"com.wm.ctf.FlagController" 的'.'其实对应文件夹的'/'

根目录 (/)  --> 存放公开的 html、图片、css、js 等,浏览器可直接访问
 │
 ├── index.jsp
 ├── images/
 │
 └── WEB-INF/      --> 【核心禁区】存放源码、配置和依赖库
      │
      ├── web.xml          --> 【网站导航图】路由配置文件
      │
      ├── classes/         --> 【源码存放地】编译后的 .class 字节码文件
      │    └── com/
      │         └── wm/
      │              └── ctf/
      │                   ├── FlagController.class  (你下载的)
      │                   ├── LoginController.class
      │                   └── ...
      │
      └── lib/             --> 【第三方库】存放项目用到的 .jar 包依赖

PixPin_2026-04-09_16-50-45.png
得到编译后的文件,直接方法jadx反编译
ScreenShot_2026-04-09_165254_950.png

得到字符串ZmxhZ3thMjE4ZTQwNy05ZjIyLTQ2ZTgtYjYyNC0xNDI5NjJlZjI0NmR9Cg==

base64解码得到flag
ScreenShot_2026-04-09_165526_967.png