打开网站一看有个登录框,一开始以为是Sql注入,试了一会儿发现好像不太行。看到登录按钮下面有一个help的链接,打开一看,
这样出错,但是将请求改为POST后就可以获取到一个文件
但是在文件里什么都没有,flag不在这里。
但是通过这个链接可以看出,我们可以通过这个链接修改为post请求来下载后台文件,我们下载一下WEB-INF/web.xml这个文件。
可以下载下来,这个文件是是Java的WEB应用的安全目录。如果想在页面中直接访问其中的文件,必须通过web.xml文件对要访问的文件进行相应映射才能访问。
这篇文章介绍了一些在CTF中常见的源码泄露的情况。ctf/web源码泄露及利用办法
我们可以通过web.xml获取到java web的配置信息。
<?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>
我们可以看到com.wm.FlagController,我们下载下载FlagController.class文件然后反编译,下载成功。
咱们使用jd-gui反编译看到flag就在这里,用base64编码了一次
使用base64解码即可。