[RoarCTF 2019]Easy Java详解wp

[RoarCTF 2019]Easy Java详解wp

[RoarCTF 2019]Easy Java

  • java源码泄露

0x01初步尝试

看到登录第一反应是sql,试了一下,没什么进展。ctrl+u看到有个超链接,是help按键对应的链接。得到

java.io.FileNotFoundException:{help.docx}

[RoarCTF 2019]Easy Java详解wp

发现help.docx的部分更改之后也可以回显,以为是注入捏(结果不是,别学我)

0x02/WEB-INF/web.xml

首先是直接在url里加上/help.docx,下载得到文档,内容如下:

[RoarCTF 2019]Easy Java详解wp

鉴于是java,于是去找Java的源码泄露。参照这位师傅的总结博客(ctf/web源码泄露及利用办法【总结中】_Sp4rkW的博客-CSDN博客_web源码泄露)icon-default.png?t=M276https://blog.csdn.net/wy_97/article/details/78165051

本题用到的是WEB-INF/web.xml和/WEB-INF/classes/泄露
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-INF/web.xml得到文件但是失败了,查看源码发现有个地方是要求POST方式传入

[RoarCTF 2019]Easy Java详解wp

 (不知道是不是因为这里,如果理解有误还请其他师傅指正)

所以在Download页面试了试,传参如下,成功下载了

[RoarCTF 2019]Easy Java详解wp

 0x03构造payload

看看web.xml,这几行里有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>

首先试了试直接访问根目录下的/Flag,然而并没有什么用。

但是!!这里的<servlet-class>是不是很眼熟!

 /WEB-INF/classes/:含了站点所有用到的 class 文件,包括 servlet class 和非servlet class

 所以我们只需要继续在Download页面用POST传入“filename=”+这一串路径(com.wm.ctf.FlagController),把路径中的“."换成”/"(个人觉得是因为java和php访问路径的格式不一样),并且在前面加上/WEB-INF/classes/,在末尾加上文件后缀(.class)就可以得到payload啦

完整payload:

filename=/WEB-INF/classes/com.wm.ctf.FlagController.class

需要注意的是,直接在页面中传参会报错,得不到回显,所以抓包查看 

[RoarCTF 2019]Easy Java详解wp

 高亮的这一段是不是很可疑!所以丢去base64解码一下,flag就出来了~~

                       

点击阅读全文

上一篇 2023年 6月 5日 am10:23
下一篇 2023年 6月 5日 am10:24