第一届数证杯个人赛---服务器取证

文摘   2024-12-05 22:44   江苏  
以下文章来源于金星路406取证人,作者WelK1n。
本次比赛服务器部分难度适中,着重考察Spring Boot框架、Docker容器、Jar包逆向、MySql数据库等内容。特别是ENC加密,需要一定的即时检索学习能力。
   本文主要是针对比赛题目进行分析和解题思路分享,只进行知识分享,不具一定的实战能力,后台不解答涉及可能侵害他人权利的问题,切勿用于违法犯罪活动。如果有工作方面的解答需求,请后台联系添加微信私聊。

SpringBoot+ENC加密&密钥存储位置

学习于文章:https://blog.csdn.net/zhuocailing3390/article/details/139908244

pom中需要配置jasypt依赖

   <dependencies>
<dependency>
          <groupId>com.github.ulisesbocchio</groupId>
          <artifactId>jasypt-spring-boot-starter</artifactId>
          <version>3.0.5</version>
      </dependency>
  </dependencies>

(1)配置文件中记录密钥

jasypt:
encryptor:
 password: hhX4FzbwcT

(2)写在jar包里

importorg.jasypt.encryption.pbe.StandardPBEStringEncryptor;

publicclassJasyptTest {

  /**
  * 加密盐值,使用完成后进行删除,或者不能提交到`生产环境`,比如:
  */
  privatefinalstaticStringPASSWORD="hhX4FzbwcT";


  publicstaticvoidmain(String[]args) {

      PooledPBEStringEncryptorencryptor=newPooledPBEStringEncryptor();

      SimpleStringPBEConfigconfig=newSimpleStringPBEConfig();
      // 用于设置加密密钥。密钥是用于加密和解密字符串的关键信息。
      config.setPassword(PASSWORD);
      // 加密算法的名称,jasypt-3.0.5版本后默认的加密方式
      config.setAlgorithm("PBEWITHHMACSHA512ANDAES_256");
      // 用于设置加密时迭代次数的数量,增加迭代次数可以使攻击者更难进行密码破解。
      config.setKeyObtentionIterations("1000");
      // 加密器池的大小。池是一组加密器实例,可确保加密操作的并发性。
      config.setPoolSize("1");
      // 用于设置JCE(Java Cryptography Extension)提供程序的名称。
      config.setProviderName("SunJCE");
      // 用于设置生成盐的类名称。在此配置中,我们使用了org.jasypt.salt.RandomSaltGenerator,表示使用随机生成的盐。
      config.setSaltGeneratorClassName("org.jasypt.salt.RandomSaltGenerator");
      // 用于设置Jasypt使用的初始化向量(IV)生成器的类名。初始化向量是在加密过程中使用的一个固定长度的随机数,用于加密数据块,使每个数据块的加密结果都是唯一的。在此配置中,我们使用了org.jasypt.iv.RandomIvGenerator类,该类是一个随机生成器,用于生成实时随机IV的实例。这样可以确保每次加密的IV都是唯一的,从而增加加密强度。
      config.setIvGeneratorClassName("org.jasypt.iv.RandomIvGenerator");
      // 指定加密输出类型。在此配置中,我们选择了base64输出类型。
      config.setStringOutputType("base64");
      encryptor.setConfig(config);

      // 明文1
      Stringname_encrypt="root";
      // 明文2
      Stringpassword_encrypt="123456";

      // 明文加密
      Stringencrypt1=encryptor.encrypt(name_encrypt);
      Stringencrypt2=encryptor.encrypt(password_encrypt);
      System.out.println("明文加密1:"+encrypt1);
      System.out.println("明文加密2:"+encrypt2);

      // 密文解密
      Stringdecrypt1=encryptor.decrypt(encrypt1);
      Stringdecrypt2=encryptor.decrypt(encrypt2);
      System.out.println("密文解密1:"+decrypt1);
      System.out.println("密文解密2:"+decrypt2);
 }
}

在spring boot项目配置文件中的ENC加密配置:

sys:
name:ENC(Yt36hceu3xGXEzrz2jCPjvalaXQ5yIHE04SVT6lIkcktrxqtBZrlivkAkA9/9oZ2)
password:ENC(0Ci6irPOko9IG+hBZJAGoguIuE52gF/XiigCV4DwLm6NfkoyvV4Etgc9FzKK3MYl)

ENC(xxxxxxxxxxxxx)形式存储密文

在controller中对密文调用:

@RestController
publicclassTestController {

  @Value("${sys.name}")
  privateStringname;

  @Value("${sys.password}")
  privateStringpassword;

  @GetMapping("/test")
  publicvoidtest() {
      System.out.println("name = "+name);
      System.out.println("password = "+password);
 }
}

其他涉及知识点在往期内容中:

MySql数据库部分知识:

电子数据取证每日一练-数据库和网站恢复

Spring Boot框架部分知识:

电子数据取证每日一练-服务器取证4

Docker容器部分知识:

电子数据取证每日一练-服务器取证5-docker容器

题目解析

1.重建完整的系统后,redis对外暴露的端口号是多少?(答案格式:数字) (3分)

16379

2.请找出加密mysql数据库连接密码所用的加密密钥(盐值)?(答案格式:注意大小写) (3分)

F*DZ-kZMs5qt

服务都在docker里,inspect查看jdk:17.0容器的具体信息,找到网站使用的jar包和yml配置文件

在jar包中搜索setPassword

3.请分析得出相亲网站的后台数据库中哪张表存放了会员相关信息,写出表名? (6分)

a_member_st

在源码中搜“会员”,查询到使用的表名为a_member_st,所以不是blind_date数据库中的a_member,去看blind_date2

使用s048-3.0.0里的jastpy-1.9.3.jar把blind_date2数据库的密码解密出来

java -cp jasypt-1.9.3.jar org.jasypt.intf.cli.JasyptPBEStringDecryptionCLI input=064l9Wwf9KjXlSz0phcwvg+R5xwzCNl7 password=F*DZ-kZMs5qt algorithm=PBEWithMD5AndDes
kidsk&klf^rv

Navicat连接blind_date2数据库

4.已知用户在系统中的所有操作都会被记录,请找出用户在“查询角色”时,其请求的后端路径地址为?(格式:/api/query/...) (3分)

/zwz/role/getAllByPage

blind_date数据库中a_log日志

5.请分析得出数据库用户表中status为-1状态值的含义为?(格式:学生) (1分)

禁用

在源码里parameter目录下commonConstant记录了系统基础常量

6.请统计平均月均收入第二高的省份(省份包含三大类:省、直辖市、自治区)(答案格式:请写出完整的省份名(或直辖市名、自治区名),如江西省、天津市、西藏自治区) (3分)

内蒙古自治区

对blind_date2数据库中a_member_st表进行分析









往期内容推荐

2024第四届全国网络空间取证竞赛(FIC)决赛参考writeup


电子数据取证每日一练往期合集


DFIR蘇小沐
致力于电子数据取证(数字取证)与事件应急响应实战技术经验分享,计算机取证、手机取证、网络取证与犯罪调查、数据恢复、模糊图像增强、司法鉴定等技术研究【蘇小沐】
 最新文章