【WEB】[RoarCTF 2019]Easy Java

考点:WEB-INF 任意文件读取,Java 敏感路径

打开题目,随便输入个测试:

密码错误,那就回去再点help,会发现有个报错:

我们用的是GET方法访问,**而这是 Java 异常,**这说明两件事:①后端确实是 Java (Tomcat);②GET这条路走不通。

既然如此,那就用POST方法访问。

抓包,将GET改为POST:

很多乱码:

我们能看到有个参数名叫filename,能往里面传参数,对 Java 来说,最高效的 "第一读" 就是 WEB-INF/web.xml,因为它是部署描述符,相当于整站的 "总路由表 + 零件清单" :里面登记了每一个 Servlet(后端类)的类全名 和它对应的网址。读这一个文件,就等于拿到了全站地图,接下来按图索骥即可。

在Java Web 应用里,编译后的代码(.class 文件)有两个固定存放位置:

  • WEB-INF/classes/:放没有打包成 jar 的 .class;
  • WEB-INF/lib/:放打包成 jar 的第三方库(jar 里装的也是一堆 .class)。

当Tomcat 启动时,它的类加载器(ClassLoader)只会去这两个地方找类 :先扫 WEB-INF/classes/,再扫 WEB-INF/lib/*.jar。所以一个类 com.wm.ctf.FlagController,Tomcat 找它时,默认就是去 WEB-INF/classes/com/wm/ctf/FlagController.class 这个位置找。

为什么最后要加 .class?

因为 Java 的编译产物就叫这个后缀。

  • 程序员写的源码是 FlagController.java(文本,人能读);
  • 用 javac 编译后,生成的是 FlagController.class(字节码,给 JVM 执行的二进制);
  • 运行在服务器上的、Tomcat 真正加载的,是编译后的 .class ,不是 .java 源码(源码一般不部署到服务器)。

直接访问,看到一串base64编码:

解码后就看到flag了

相关推荐
Mikko712 分钟前
用 Java 复刻了高中时在塞班上玩的「熔岩矿车」:纯 Swing、零依赖、没有一张图片,一个 jar 双击就能玩
java·游戏开发·swing
知了学历孙老师13 分钟前
小自考的校考和统考,出题方和难度差在哪
java·大数据·前端
Java爱好狂.32 分钟前
Java初学者如何一周速通SpringBoot!
java·spring boot·后端·spring·高并发·架构师·java面试
秋饼1 小时前
LLM API密钥动态轮换实战:Spring Vault + Spring AI + 多Provider路由
java·ai·技术分享·后端开发
gCode Teacher 格码致知2 小时前
Pandas教学-17:Series与Dataframe的关系
开发语言·python·pandas
发量惊人的中年网工2 小时前
分公司访问总部ERP慢怎么办?SD-WAN组网的排查与验收要点
服务器·开发语言·php
下页、再停留2 小时前
【C#桌面客户端系列学习-15】生成可视化图表之折线图、柱状图、饼状图
开发语言·c#
ShineWinsu2 小时前
对于JavaScript:操作元素的解析
开发语言·前端·javascript·面试·web·dom·元素
福兮说3 小时前
JSON 格式正确,数据就可靠吗?我用一份自编配置检查类型与空值
java·前端·json
益莱储中国4 小时前
深度解析:RF 实验室从 5G迈向 6G 的过程中保持技术领先与设备升级的路径
开发语言·php