[GKCTF2021]babycat

Posted Y4tacker

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[GKCTF2021]babycat相关的知识,希望对你有一定的参考价值。

文章目录

写在前面

是Java没错了,冲它

babycat

发现接口直接post发包注册一个号登录进去
在这里插入图片描述
此时我们可以看见不管怎样role都是guest,后台只有管理员有上传权限
在这里插入图片描述
我们需要关注如何成为admin,但是文件下载那里可以目录穿越首先读取web.xml

<web-app>
  <servlet>
    <servlet-name>register</servlet-name>
    <servlet-class>com.web.servlet.registerServlet</servlet-class>
  </servlet>
  <servlet>
    <servlet-name>login</servlet-name>
    <servlet-class>com.web.servlet.loginServlet</servlet-class>
  </servlet>
  <servlet>
    <servlet-name>home</servlet-name>
    <servlet-class>com.web.servlet.homeServlet</servlet-class>
  </servlet>
  <servlet>
    <servlet-name>upload</servlet-name>
    <servlet-class>com.web.servlet.uploadServlet</servlet-class>
  </servlet>
  <servlet>
    <servlet-name>download</servlet-name>
    <servlet-class>com.web.servlet.downloadServlet</servlet-class>
  </servlet>
  <servlet>
    <servlet-name>logout</servlet-name>
    <servlet-class>com.web.servlet.logoutServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>logout</servlet-name>
    <url-pattern>/logout</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>download</servlet-name>
    <url-pattern>/home/download</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>register</servlet-name>
    <url-pattern>/register</url-pattern>
  </servlet-mapping>
  <display-name>java</display-name>
  <servlet-mapping>
    <servlet-name>login</servlet-name>
    <url-pattern>/login</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>home</servlet-name>
    <url-pattern>/home</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>upload</servlet-name>
    <url-pattern>/home/upload</url-pattern>
  </servlet-mapping>

  <filter>
    <filter-name>loginFilter</filter-name>
    <filter-class>com.web.filter.LoginFilter</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>loginFilter</filter-name>
    <url-pattern>/home/*</url-pattern>
  </filter-mapping>
  <display-name>java</display-name>

  <welcome-file-list>
    <welcome-file>/WEB-INF/index.jsp</welcome-file>
  </welcome-file-list>
</web-app>

可以慢慢读取文件,这里乱码用浏览器下载即可
在这里插入图片描述
反编译看一下注册的部分

在这里插入图片描述

可以看见这里
在这里插入图片描述
接收data参数并正则匹配"role":"(.*?)"

for(Matcher matcher = pattern.matcher(var); matcher.find(); role = matcher.group()) {
        }

这里for循环的意思是对最后一个匹配的进行强制替换

在这里插入图片描述
由于是gson进行解析,所以我们可以配合注释符,成功成为了admin
在这里插入图片描述
接下来我们看看uploadServlet的内容,可以看见这里分别有内容和后缀的白名单

在这里插入图片描述
继续读其他文件

在这里插入图片描述
可以通过触发XMLDecoder
在这里插入图片描述
用实体编码绕过
在这里插入图片描述
覆盖以后再次登录触发利用

在这里插入图片描述

以上是关于[GKCTF2021]babycat的主要内容,如果未能解决你的问题,请参考以下文章

[WriteUp]GKCTF2021 babycat

GKCTF 2021 Reverse Writeup

[GKCTF2021]easycms

[GKCTF2021]easycms

[GKCTF2021]easycms

[GKCTF2021]复现wp