[RoarCTF 2019]Easy Java

目录

解题过程:

相关链接:


题目:

解题过程:

打开之后是如下的界面,本来以为是SQL注入的题目,后来发现不是,还是自己太菜了。。。

点击help,回显如下

同时url为

http://79333d59-1ede-4ccf-8024-f7d49f14f702.node3.buuoj.cn/Download?filename=help.docx

相关资料,资料原文传送门

漏洞成因:通常一些web应用我们会使用多个web服务器搭配使用,解决其中的一个web服务器的性能缺陷以及做均衡负载的优点和完成一些分层结构的安全策略等。在使用这种架构的时候,由于对静态资源的目录或文件的映射配置不当,可能会引发一些的安全问题,导致web.xml等文件能够被读取。漏洞检测以及利用方法:通过找到web.xml文件,推断class文件的路径,最后直接class文件,在通过反编译class文件,得到网站源码。一般情况,jsp引擎默认都是禁止访问WEB-INF目录的,Nginx 配合Tomcat做均衡负载或集群等情况时,问题原因其实很简单,Nginx不会去考虑配置其他类型引擎(Nginx不是jsp引擎)导致的安全问题而引入到自身的安全规范中来(这样耦合性太高了),修改Nginx配置文件禁止访问WEB-INF目录就好了: location ~ ^/WEB-INF/* { deny all; } 或者return 404; 或者其他!

根据上文,我们先找一下WEB-INF/web.xml,POST传值

得到WEB-INF/web.xml文件,打开

<web-app xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" version="4.0">
<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>

我们可以看到com.wm.FlagController,然后下载FlagController.class文件试一试

filename=WEB-INF/classes/com/wm/ctf/FlagController.class

得到

记事本打开,有一串base64编码

   !  " 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   <ZmxhZ3szMWUyNzMyNy1iM2VjLTRlZjktYTIyMS0wOGMzOTg2NTNkNmR9Cg== 	 
 % & ' &<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 !        	

解码,得到flag


本题目几乎是啥都不懂,只好上网搜资料慢慢看,下面几篇文章我觉得比较好,希望对各位有所帮助。

相关链接:

1.WEB-INF/web.xml泄露

2.easy java详解

3.tomcat相关资料

4.web项目的WEB-INF项目

  • 10
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值