[ctfshow摆烂杯] 登陆不了

解题思路

信息收集

  • 判断网站类型为java
  • 找隐藏的接口 --发现一个存在任意文件读取的地方

存在任意文件读取

image
打开是src是http://5d5ab01d-98d4-4fdb-98b7-78a924e4760d.challenge.ctf.show/v/c?r=YzgxZTcyOC5qcGc= 进行b64解码
尝试读取/etc/passwd
image
有响应但是没数据,猜测不能使用绝对路径,用相对路径测试

image
发现可以成功读取

java的题,直接就尝试读web.xml,classes等

利用相对路径读取敏感文件

默认情况下,WEB-INF下的文件是不允许访问的

  • 读取web.xml
    image

  • 读取pom.xml
    image
    发现框架,进行读取

  • 读取框架jar,并保存到文件
    image

保存后,发现文件反编译失败。看了wp,发现是直接保存下来的jar的文件结构有问题,在这里需要把末尾的结构标准化为下图,即删除后面多余的数据
image

  • 读取index控制器
    发现首页控制器com.ctfshow.controller.Index,但lib中没有,那就应该在classes中,再去读对应的字节码文件

classes中的文件名是class为后缀,千万别忘了这个;class的文件头为CA FE BA BE

  • 框架代码审计
    image
    发现任意文件写入,利用tomcat的热加载机制,重写web.xml,再写个对应的jsp马,写反弹shell即可。

分析小结

java项目的敏感信息

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.xml文件,推断class文件的路径,最后直接class文件,在通过反编译class文件,得到网站源码

bp保存class文件

会出现后面很多00 ,class后面的可以直接删掉,有些文件结构后面有0,需要判断后在进行格式化。可以使用010editor中的模板进行处理

posted @ 2022-01-14 16:10  Aur0ra*  阅读(194)  评论(0编辑  收藏  举报