
本题主要需要知道java的后端文件结构
这里的登录框首先想到会不会有sql注入,但是试过各种闭合都没用,所以尝试找别的突破口
查看网页源代码的时候看到有一个herf跳转的链接
发现filename参数输入的东西会被打印出来,这里首先想到的是有啥语句可以直接把flag打印出来,结果这个想法没用
后面问ai之后,结合Download文件夹下,用post请求文件就可以下载
至于为什么下载WEB-INF/web.xml文件,主要是因为flag文件也访问过了,访问失败
又看到这个网站后端是Java,根据Tomcat的目录结构,网页目录下会有这个文件
直接打开下载的文件
看到刚刚的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 包依赖
得到编译后的文件,直接方法jadx反编译
得到字符串ZmxhZ3thMjE4ZTQwNy05ZjIyLTQ2ZTgtYjYyNC0xNDI5NjJlZjI0NmR9Cg==
base64解码得到flag