看到账号密码第一开始是猜测sql或者去爆破,但是我们点开下面的help可以看到
java.io.FileNotFoundException 是 Java中常见的异常之一,表示在试图打开或访问指定文件时未找到该文件。出现这个异常通常是因为以下几种原因:
文件路径错误:指定的文件路径不正确,或者文件名拼写错误。
文件不存在:文件在指定的路径下不存在。
文件权限:没有权限读取指定的文件。
工作目录:程序的工作目录与文件所在的目录不一致。
这里GET方法来下载是不行的,既然给出了help.docx这个提示,我猜测题目作者应该是想让换一种方法来下载。那么我们在POST中进行传入filename=help.docx就能把这个文件下载下来了
下载之后查看,这个docx好像没多大用处
根据其他佬的blog,接下来应该要访问/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-INF/lib/:存放web应用需要的各种JAR文件,放置仅在这个应用中要求使用的jar文件,如数据库驱动jar文件
/WEB-INF/src/:源码目录,按照包名结构放置各个java文件
/WEB-INF/database.properties:数据库配置文件
接下来,我们跟前面下载help.docx一样来访问web.xml,我们可以下载看到源代码
可以看到com.wm.ctf.FlagController被<servlet-class>包裹,在前面介绍的WEB-INF知识点中介绍了/WEB-INF/classes/:含了站点所有用的 class 文件,包括 servlet class 和非servlet class,他们不能包含在.jar文件中
所以我们可以得到文件目录也就是访问filename=WEB-INF/classes/com/wm/ctf/FlagController.class然后我们就可以得到源码,记事本打开,发现一串base64
Base64 在线编码解码 | Base64 加密解密 - Base64.us解码得到
对于上面的javaweb目录结构如下
/web-app
│
├── WEB-INF
│ ├── web.xml
│ └── classes
│ └── com
│ └── wm
│ └── ctf
│ ├── IndexController.class
│ ├── LoginController.class
│ ├── DownloadController.class
│ └── FlagController.class
├── Index.jsp