0
点赞
收藏
分享

微信扫一扫

[GKCTF2021]babycat

金穗_ec4b 2022-10-31 阅读 241


文章目录

  • ​​写在前面​​
  • ​​babycat​​

写在前面

是Java没错了,冲它

babycat

发现接口直接post发包注册一个号登录进去

[GKCTF2021]babycat_for循环


此时我们可以看见不管怎样role都是guest,后台只有管理员有上传权限

[GKCTF2021]babycat_xml_02


我们需要关注如何成为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>

可以慢慢读取文件,这里乱码用浏览器下载即可

[GKCTF2021]babycat_for循环_03


反编译看一下注册的部分

[GKCTF2021]babycat_xml_04

可以看见这里

[GKCTF2021]babycat_java_05


接收​​data​​​参数并正则匹配​​"role":"(.*?)"​

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

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

[GKCTF2021]babycat_xml_06


由于是gson进行解析,所以我们可以配合注释符,成功成为了​​admin​

[GKCTF2021]babycat_xml_07


接下来我们看看​​uploadServlet​​的内容,可以看见这里分别有内容和后缀的白名单

[GKCTF2021]babycat_for循环_08


继续读其他文件

[GKCTF2021]babycat_for循环_09


可以通过触发​​XMLDecoder​

[GKCTF2021]babycat_for循环_10


用实体编码绕过

[GKCTF2021]babycat_java_11


覆盖以后再次登录触发利用

[GKCTF2021]babycat_for循环_12


举报

相关推荐

[GKCTF 2021]easynode

ai 2021:Illustrator 2021 mac

Mac版 Photoshop 2021---PS2021

你好,2021~

2021 面试心得

[VNCTF 2021]naive

2021 - OC(一)

0 条评论