【靶场练习】BUUCTF——[RoarCTF 2019]Easy Java

前言

注册BUUCTF:https://buuoj.cn/
打开搜索 easy_java,然后启动靶机,开始练习~
在这里插入图片描述

尝试并寻找突破口

点击 help,获得提示,应该有个help.docx文件。
在这里插入图片描述
所以访问http://a1e823e2-2d18-4639-8242-6db593857e71.node4.buuoj.cn:81/help.docx,下载查看。
在这里插入图片描述

em--------------------有点悲伤,flag不在这里
在这里插入图片描述
但是,既然可以通过访问目录下载文件,那我们肯定要尝试下载一些敏感信息文件啦~比如尝试一下/WEB-INF/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:数据库配置文件


GET请求不行,换成POST,提示URL不对,加上Download目录【这个目录在点击helo的时候,自己就出现的】
在这里插入图片描述
在这里插入图片描述

果然,有重大发现

<?xml version="1.0" encoding="UTF-8"?>
-<web-app version="4.0" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee">
-<welcome-file-list>
<welcome-file>Index</welcome-file>
</welcome-file-list>
-<servlet>
<servlet-name>IndexController</servlet-name>
<servlet-class>com.wm.ctf.IndexController</servlet-class>
</servlet>
-<servlet-mapping>
<servlet-name>IndexController</servlet-name>
<url-pattern>/Index</url-pattern>
</servlet-mapping>
-<servlet>
<servlet-name>LoginController</servlet-name>
<servlet-class>com.wm.ctf.LoginController</servlet-class>
</servlet>
-<servlet-mapping>
<servlet-name>LoginController</servlet-name>
<url-pattern>/Login</url-pattern>
</servlet-mapping>
-<servlet>
<servlet-name>DownloadController</servlet-name>
<servlet-class>com.wm.ctf.DownloadController</servlet-class>
</servlet>
-<servlet-mapping>
<servlet-name>DownloadController</servlet-name>
<url-pattern>/Download</url-pattern>
</servlet-mapping>
-<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>
</web-app>

在这里插入图片描述

进一步分析payload

这段代码很关键呀,但是我们怎么找出flag呢?
科普:servlet:Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器,用Java编写的服务器端程序,具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成数据,生成动态Web内容。(来源百度百科)
其实说明了这个就是JAVA源代码进行编译后所产生的后缀带有.class的东西。于是我们可以下载这个.class文件再利用反编译手段来获得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>

所以payload就是,filename=/WEB-INF/classes/com/wm/ctf/FlagController.class
在这里插入图片描述
打开文件,内容如下:

漱壕   4 +
   	     
   !  " flag Ljava/lang/String; <init> ()V Code LineNumberTable doGet R(Ljavax/servlet/http/HttpServletRequest;Ljavax/servlet/http/HttpServletResponse;)V 
Exceptions # $ 
SourceFile FlagController.java RuntimeVisibleAnnotations %Ljavax/servlet/annotation/WebServlet; name FlagController   <ZmxhZ3s2OTJjMDQxZS0yNmJlLTRkZTgtODk0Zi05ZjNjNDc1M2UxMTV9Cg== 	 
 % & ' &<h1>Flag is nearby ~ Come on! ! !</h1> ( ) * javax/servlet/http/HttpServlet javax/servlet/ServletException java/io/IOException &javax/servlet/http/HttpServletResponse 	getWriter ()Ljava/io/PrintWriter; java/io/PrintWriter print (Ljava/lang/String;)V !        	 
        
   '     *?*??      
    
       
   .     ,? N-??             
                      s 

看到提示了吗?“Flag is nearby ~ Come on! ! !”
所以前后找找,发现前面有一串疑似base64编码的字符串,复制去解码。得到flag啦~
在这里插入图片描述

提交格式

提交的时候需要把这整个串“flag{******************************}”都粘贴进去才行哦~
在这里插入图片描述

写在最后的心情小记

也不知道是什么原因,我启动靶机之后,打不开。刚开始以为靶机有问题,然后我疯狂重开。
后来,让周围的人打开能打开,然后又让群友打开也能打开,但是我换了几个浏览器都打不开!!!!
重启几次也不行,改本地hosts文件、关掉代理、设置防火墙允许浏览器通过、、、、网上能找到的办法我似乎都尝试了。
最后,热心群友让我打开VPN,开启系统代理,然后能打开了~这才成功完成了这第一次ctf题目的尝试。
太难受了,搞了三小时打不开靶机,打开之后5分钟解决做完题,这谁不难过呀,哎。
没事没事,以后指不定记知道是什么问题了,然后就能尽量避免这种奇奇怪怪的问题啦~

扫描二维码关注公众号,回复: 14502549 查看本文章

猜你喜欢

转载自blog.csdn.net/weixin_49422491/article/details/126085122