【BUUCTF】Easy Java
【BUUCTF】Easy Java
题目来源
收录于:BUUCTF RoarCTF 2019
题目描述
经典登录框

不过SQL注入、目录扫描都没有发现
题解
点击页面的 help

跳转到/Download路径下,但是并没有得到其他信息。
这里我们改变请求方式为 POST即可下载文件help.docx

但是打开help.docx并没有得到有用的信息

这里补充一下JAVA的知识点,以下内容搬运自:https://blog.csdn.net/wy_97/article/details/78165051
WEB-INF 是Java的WEB应用的安全目录。如果想在页面中直接访问其中的文件,必须通过web.xml文件对要访问的文件进行相应映射才能访问。
WEB-INF主要包含以下文件或目录:
/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:数据库配置文件
因此我们下载文件web.xml

web.xml的内容如下
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<welcome-file-list>
<welcome-file>Index</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>IndexController</servlet-name>
<servlet-class>com.wm.ctf.IndexController</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>IndexController</servlet-name>
<url-pattern>/Index</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>LoginController</servlet-name>
<servlet-class>com.wm.ctf.LoginController</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>LoginController</servlet-name>
<url-pattern>/Login</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>DownloadController</servlet-name>
<servlet-class>com.wm.ctf.DownloadController</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>DownloadController</servlet-name>
<url-pattern>/Download</url-pattern>
</servlet-mapping>
<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>
</web-app>
web.xml用于映射路径(URI)和后端服务程序(servlet)。servlet 是经过编译后,后缀名为.class的文件
拿Index举例:

/Index页面对应的后端程序路径为/WEB-INF/classes/com/wm/ctf/IndexController.class
可以看到/Flag对应的路径为/WEB-INF/classes/com/wm/ctf/FlagController.class
下载该文件

该文件是编译后的JAVA程序,因此我们可以使用JAVA在线反编译网站对其反编译,得到源码

显然这是一个base64编码的字符串,解码得到flag。
总结
WEB-INF 是Java的WEB应用的安全目录。如果想在页面中直接访问其中的文件,必须通过web.xml文件对要访问的文件进行相应映射才能访问。
WEB-INF主要包含以下文件或目录:
/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:数据库配置文件
【BUUCTF】Easy Java的更多相关文章
- Java牛角尖【007】:Java中的Error能不能被Catch
Java牛角尖[007]:Java中的Error能不能被Catch 网上看到很多朋友说Java中Error是无法Catch到的,而Java中定义的Error类型又很难测试到,那就估且以为确是如此吧 ...
- 【读后感】《Java编程思想》~ 异常
[读后感]<Java编程思想>~异常 终于拿出压箱底的那本<Java编程思想>.这本书我年轻的时候就买了,但是翻过几页后就放弃了.没想到这两天翻了一下,真的有收获. 看了一下第 ...
- 【Ubuntu】安装Java和Eclipse
1. 安装Java 1> sudo add-apt-repository ppa:webupd8team/java 2> sudo apt-get update 3> sudo ap ...
- 【android相关】【问题解决】R.java文件丢失
在进行android开发过程中,有时候,我们会遇到gen文件中R.java丢失的现象.重新build,或者clean工程,close并重新打开Project,但有时也没解决. 这可能是由于不小心把xm ...
- 【转】《JAVA与模式》之责任链模式
<JAVA与模式>之责任链模式 在阎宏博士的<JAVA与模式>一书中开头是这样描述责任链(Chain of Responsibility)模式的: 责任链模式是一种对象的行为模 ...
- 【Zookeeper】 在Java中的操作
一.基本功能演示 1.1 Maven依赖信息 1.2 代码演示 方法说明 1.3 创建Zookeeper节点信息 二.Watcher 2.1 什么是Watcher接口 2.2 Watcher代码 一. ...
- Java 语言特性【一】——JUC(Java 并发工具包)
引言 JUC即java.util.concurrent,是java提供的用于多线程处理的工具类库.重点关注 ConcurrentXXX.AtomicXXX.Executor.Caller&&a ...
- Java集合【1】--俯瞰java集合分类
目录 (一) java集合分类 (1) Iterable接口 1. 内部定义的方法 1.1 iterator方法 1.2 forEach方法 1.3 spliterator方法 2. Collecti ...
- 【Eclipse】调试java程序的九个技巧
本文转自[半夜乱弹琴],原文地址:http://www.cnblogs.com/lingiu/p/3802391.html 九个技巧: 逻辑结构 条件debug 异常断点 单步过滤 跳到帧 Inspe ...
- 【转】安卓Java的虚拟机区别
Google于2007年底正式发布了Android SDK, 作为 Android系统的重要特性,Dalvik虚拟机也第一次进入了人们的视野.它对内存的高效使用,和在低速CPU上表现出的高性能,确实令 ...
随机推荐
- Go 内存管理
操作系统内存管理 操作系统管理内存的存储单元是页(page),在 linux 中一般是 4KB.而且,操作系统还会使用 虚拟内存 来管理内存,在用户程序中,我们看到的内存是不是真实的内存,而是虚拟内存 ...
- openEuler欧拉系统重置root密码
步骤: 系统启动时,出现如下页面,按e进入内核编辑模式 进入如下页面 按下光标后,找到linux开头这一行,修改ro为rw,并在行尾添加init=/bin/sh,修改后效果如下,在crtl+x保存后开 ...
- 基于.NET WinForm开发的一款硬件及协议通讯工具
前言 今天大姚给大家分享一款基于.NET WinForm开发的一款硬件及协议通讯工具:PLC-CommunTools. 项目介绍 PLC-CommunTools是一款基于.NET WinForm开发的 ...
- 【Vue】vite+vue3 如何实现点击进入详情页/文章页
如上图,点击标题可以进入详情页,关键代码截图如下: 然后去配置路由 那么组件如何从地址中接收参数呢
- 解锁4K,Xilinx MPSoC ARM + FPGA高清视频采集与显示方案!
当下,随着数字化多媒体技术以令人惊叹的速度不断演进,高清视频处理成为众多领域关注的焦点.今天为大家分享4K HDMI 高清视频方案,基于Xilinx UltraScale+ MPSoC XCZU7EV ...
- Qt音视频开发15-动态切换解码内核的设计
一.前言 动态切换解码内核这个需求也是源自客户的真实需求,既然是动态切换,那肯定是运行期间切换,而不是通过改变标志位重新编译程序来切换,最开始做的就是这种方式,这样就是实现起来简单,但是用起来不够方便 ...
- WIN10删除文件时提示“找不到该项目,该项目不在......中,请确认该项目的位置,然后重试”的解决办法
问题描述: 最近有部分WIN10用户在删除文件时提示"找不到该项目,该项目不在......中,请确认该项目的位置,然后重试". 解决办法: 1.首先新建一个TXT文档(为了方便使用 ...
- 使用R语言可视化地图数据
在科研工作中,经常会遇到需要在地图上展示数据的情况,今天分享一下如何使用R语言可视化地图数据 # 先安装和导入R包,这里使用了本地地图数据,所以只导入maps包即可 # install.package ...
- 【C语言学习】——命令行编译运行 C 语言程序的完整流程
今天要学习的内容是 命令行编译运行 C 语言程序,进一步理解C语言编译运行的底层实现和编译原理相关知识,下面是命令行编译运行 C 语言程序的完整流程 一.理论讲解 1. 编译原理概述 1.1 编译过程 ...
- Android基础入门教程-参考资料
2)看视频 网上关于Android的视频教程有很多,这里分享下基神力荐的黑马教程吧: 黑马28期Android全套视频无加密完整版:密码:h7jz 52期不加密版:密码:zve8 当然下面这些视频学习 ...