题目:
点击help后,报错,表明程序在尝试访问指定文件时,该文件并不存在于指定的路径中
这里可能有以下报错原因:
- 权限问题
- 相对路径问题:如果你使用的是相对路径,程序可能会在错误的工作目录中查找文件。相对路径是相对于程序的当前工作目录的,而当前工作目录可能和你预期的不一样。
GET方法不行,用POST方法提交成功
下载help.docx发现并没有什么用
java配置文件 :
/WEB-INF/web.xml
WEB-INF是java的WEB应用的安全目录,此外如果想在页面访问WEB-INF应用里面的文件,必须要通过web.xml进行相应的映射才能访问。
其中敏感目录举例:
- /WEB-INF/web.xml:Web应用程序配置文件,描述了 servlet 和其他的应用组件配置及命名规则
- /WEB-INF/classes/:含了站点所有用的 class 文件,包括 servlet class 和非servlet class,他们不能包含在.jar文件中,【用于存放 Web 应用中自定义的 Java 类的编译结果。当 Java 源代码被编译成字节码(
.class
文件)后,通常会被放置在这个目录下,以便服务器在运行时能够找到并加载这些类。】- /WEB-INF/lib/:存放web应用需要的各种JAR文件,放置仅在这个应用中要求使用的jar文件,如数据库驱动jar文件
- /WEB-INF/src/:源码目录,按照包名结构放置各个java文件
- /WEB-INF/database.properties:数据库配置文件
发现java页面时,一般以POST请求方式访问/WEB-INF/web.xml并将其下载下来
这里发现flag的控制类Controller
Servlet(小服务程序)是一种在服务器端运行的 Java 程序,用于处理客户端请求并生成动态响应,
FlagController 就
是一个 Servlet 类
<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>
<servlet-name>
标签:将其命名为FlagController
。这个名称主要用于在web.xml
文件内部进行引用<servlet-class>
标签:指定实现该 Servlet 功能的 Java 类的全限定名。com.wm.ctf.FlagController
表明该类位于com.wm.ctf
包下,类名为FlagController
。在 Web 应用启动时,服务器会依据这个全限定名去加载对应的 Java 类,并将其作为 Servlet 进行管理。<servlet-mapping>
标签:其作用是将 Servlet 与特定的 URL 建立关联。<servlet-name>
标签:这里的FlagController
要与前面<servlet>
标签中定义的 Servlet 名称保持一致,以此来明确要映射的是哪个 Servlet。<url-pattern>
标签:指定了客户端请求的 URL 模式。这里/Flag
表示当客户端访问http://yourserver/yourcontext/Flag
时,服务器会调用com.wm.ctf.FlagController
类来处理该请求。
filename=/WEB-INF/classes/com/wm/ctf/FlagController.class
/com/wm/ctf
包路径:
这部分代表 Java 类所在的包结构,com.wm.ctf
是一个标准的 Java 包名,包名通常采用反转的域名格式,例如 com.example
。
关于Java包:
其实相当于一个文件夹的东西,Java 类所在的包结构使用点号(.
)来分隔不同的层级,类似于文件系统中的路径。比如说,com.example.util.StringUtils
表示 StringUtils
类位于 com.example.util
包中。
FlagController.class
文件:
这是一个编译后的 Java 类文件,对应的源代码文件可能是 FlagController.java
。
由于class类不能直接打开,应该用IDA打开,这里直接用记事本打开了
发现一串base64编码
解码后拿到flag