[RoarCTF 2019]Easy Java
打开页面之后发现是一个POST界面

用bp抓包之后进行sql注入也失败了,查看源码之后发现有一个链接

这个链接有点意思,因为他的参数名是在Download目录下的,有下载文件的的可能性,但是直接点击之后并没有下载什么文件

这个页面透露了这个是一个java web应用而不是php,FileNotFoundException暗示了存在文件下载的功能,但是找不到文件
这个时候可以尝试一下从url中的get方式改为我们手动post方式发现居然可以下载help.docx文件

打开之后就得到了作者的挑衅,这里我就不打开了。但是我们知道在这个Download目录下可以用post方法下载文件。我尝试了一下下载flag.php和index.php都失败了,因为这是一个java web不是php。
java web的标准文件配置是/WEB-INF/web.xml文件,于是尝试一下把filename的值修改一下:
payload:filename=/WEB-INF/web.xml
下载到了java配置文件
这边我们只看和flag相关的
<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>
发现这边有一个FlagController的类名,完整类名是com.wm.ctf.FlagController
在 Java Web 应用中,编译后的 `.class` 文件存储遵循以下规则:
1. 基础路径:/WEB-INF/classes/
2. 包结构映射:包名中的点(`.`)对应文件系统中的斜杠(`/`)
3. 文件扩展名:.class
那么现在我们来构造payload
/WEB-INF/classes/ + com/wm/ctf/FlagController + .class
基础路径 + 包机构映射 + 文件扩展名
payload:filename=/WEB-INF/classes/com/wm/ctf/FlagController.class
利用post方式上传之后即可得到.class文件,用Java IDE打开就可以看到base64加密后的flag
更多推荐

所有评论(0)