2025数证杯决赛团体赛服务器解析

yagami 发表于 6 天前 共 4,056 字、阅读约 13 分钟

2025数证杯决赛团体赛服务器解析

文档简介:本文档详细解析2025数证杯决赛团体赛服务器取证题目,包含17道题目(题目36-52)的完整解答过程。

适用对象:数字取证从业者、网络安全专业学生、竞赛参赛选手

难度等级:高级

预计完成时间:4-6小时

参考来源:部分参考取证与溯源公众号文章


📋 环境配置指南

🔧 网络配置

  1. 判断服务器原IP设置

    # 查看网卡配置文件
    /etc/sysconfig/network-scripts/ifcfg-ens33
    

    image-20251126182216397

    # 查看hosts文件
    /etc/hosts
    

    image-20251126182145876

  2. 配置VMware虚拟网络

    • 将NAT模式的子网段改为:172.23.194.0
    • DHCP起始地址改为:172.23.194.157
      image-20251127023704459

🚀 虚拟机启动顺序

依次仿真启动:

  1. 服务器检材二.E01
    image-20251126182728700
  2. 服务器检材一.E01
    image-20251126182751189

🔧 网络问题排查

问题:服务器检材一.E01启动后没有获取IP

解决方案一:添加网卡

  • 在VMware中为此虚拟机再添加一块网卡

解决方案二:修改网卡配置

# 编辑网卡配置文件
vi /etc/sysconfig/network-scripts/ifcfg-ens33

# 将 ONBOOT=no 改为 ONBOOT=yes
ONBOOT=yes

# 重启网卡
service network restart

image-20251126183800706

💡 重要提示:配置网卡是服务器仿真的第一步。根据实际情况选择合适的方式:增加删除修改网卡配置文件、VMware中添加网卡、或使用命令配置。

配置完成后,使用SSH客户端连接服务器,正式进入环境重构答题环节。

Gemini_Generated_Image_kfoxcakfoxcakfox


📝 题目解析

题目36:systemd管理的服务单元中,配置为开机自启动(enabled状态)的服务数量为多少个?

题目要求:仅数字

✅ 答案

34

🔧 解题步骤

# 查看所有开机自启动的服务
systemctl list-unit-files --type=service --state=enabled --no-legend | wc -l

image-20251126185351240

Gemini_Generated_Image_c5qu07c5qu07c5qu


题目37:系统内核的编译时间是?

题目要求:中国时区,格式:1990-10-10 10:10:10

✅ 答案

2024-06-04 22:43:51

🔧 解题步骤

# 获取内核编译时间并转换为中国时区
TZ='Asia/Shanghai' date -d "$(uname -v | cut -d ' ' -f 3-)" "+%Y-%m-%d %H:%M:%S"

Gemini_Generated_Image_jx0fy7jx0fy7jx0f


题目38:gitlab的服务端口是多少?

题目要求:仅数字

✅ 答案

9999

🔧 解题步骤

# 查看GitLab配置文件中的端口设置
cat /etc/gitlab/gitlab.rb | grep external_url

image-20251126185442736

Gemini_Generated_Image_vvok8rvvok8rvvok


题目39:GitLab日志中记录的登录失败次数为多少次?

题目要求:仅数字

✅ 答案

6

🔧 解题步骤

  1. 提取日志文件
    从服务器检材一.E01镜像中提取:

    /var/log/gitlab/gitlab-rails/application_json.log
    
  2. 搜索登录失败记录

    # 在日志文件中搜索关键字Failed Login
    

    image-20251126201012875

    Gemini_Generated_Image_o7oltqo7oltqo7ol


题目40:已知gitlab的root的登录密码是abc???(后面六位是纯数字),请问该明文密码多少?

题目要求:按实际值填写

✅ 答案

abc123654

🔧 解题步骤

参考文章密码得密文从gitlab使用得PostgreSQL中查找,我这里写2个更简单得方法

方法一:通过GitLab控制台查看

# 进入GitLab控制台
gitlab-rails console -e production

# 查找root用户
user = User.find_by(username: 'root')

# 查看加密密码
user.encrypted_password

image-20251126204043230

方法二:通过命令行查看

# 查询root用户的加密密码
gitlab-psql -c "SELECT username, encrypted_password FROM users WHERE username = 'root';"

image-20251126211020369

使用Hashcat破解

# 使用掩码攻击破解
hashcat -a 3 -m 3200 "$2a$10$joK1mu.0whkjO8IvGSG/X.wVlUofNpX6hplpT85SQjdp.Dg0l7AKO" abc?d?d?d?d?d?d

s

# 显示破解结果
hashcat --show -m 3200 "$2a$10$joK1mu.0whkjO8IvGSG/X.wVlUofNpX6hplpT85SQjdp.Dg0l7AKO"

image-20251126205210293

验证步骤

  1. 关闭防火墙:systemctl stop firewalld
  2. 浏览器访问:http://服务器检材一.E01虚拟机IP:9999/
  3. 使用账号root,密码abc123654登录验证

image-20251126205408493

Gemini_Generated_Image_odcrx5odcrx5odcr


题目41:gitlab中的仓库的第一次提交时间是多少?

题目要求:中国时区,格式:1990-10-10 10:10:10

✅ 答案

2025-11-06 11:07:02

🔧 解题步骤

方法一:命令方式

# 进入Git仓库目录
cd /opt/gitlab-ce/git-data/repositories/@hashed/4e/07/4e07408562bedb8b60ce05c1decfe3ad16b72230967de01f640b7e4729b49fce.git

# 查看提交历史(最早提交在前)
/opt/gitlab/embedded/bin/git -c safe.directory=* log --reverse --date=iso | head -n 5

image-20251126205719981

方法二:Web界面方式

  1. 进入GitLab Web界面

  2. 点击左侧菜单 CodeCommits

  3. 找到 Initial commit

  4. 鼠标悬停在时间显示上查看具体时间
    image-20251126210325731

Gemini_Generated_Image_zc6zppzc6zppzc6z


题目42:root用户的电子邮件是多少?

题目要求[email protected]

✅ 答案

[email protected]

🔧 解题步骤

方法一:通过GitLab控制台查看

# 进入GitLab控制台
gitlab-rails console -e production

# 查找root用户
user = User.find_by(username: 'root')

# 查看邮箱
user.email

image-20251126210730722

方法二:通过命令行查看

# 查询root用户的邮箱
gitlab-psql -c "SELECT email FROM users WHERE username = 'root';"

image-20251126210843398

方法三:通过Web界面查看

  1. 进入GitLab Web界面

  2. 点击左上角绿色用户头像

  3. 选择 Edit Profile

  4. 查看邮箱信息
    image-20251126211258983

Gemini_Generated_Image_h42r9oh42r9oh42r


题目43:已知git仓库被某人下载了并对外传播,请问该用户的用户名是什么?

题目要求:按实际值填写

✅ 答案

Mia

🔧 解题步骤

  1. 搜索GitLab日志

    # 在GitLab日志中搜索oimmanage相关的下载记录
    find /var/log/gitlab -name "*.gz" -print0 | xargs -0 zgrep -i "oimmanage" | grep -E "archive|git-upload-pack"
    

    image-20251126212154709

  2. 分析日志记录
    在日志文件 /var/log/gitlab/gitlab-rails/production_json.log.1.gz 中发现:

    {
      "method": "GET",
      "path": "/ccy/oimmanage/-/archive/main/oimmanage-main.zip",
      "format": "zip",
      "controller": "Projects::RepositoriesController",
      "action": "archive",
      "status": 200,
      "time": "2025-11-06T05:09:47.062Z",
      "username": "Mia",
      "user_id": 3,
      "remote_ip": "172.23.194.1"
    }
    
  3. Nginx日志验证

    # Nginx访问日志验证下载成功
    172.23.194.1 - - [06/Nov/2025:13:09:48 +0800] "GET /ccy/oimmanage/-/archive/main/oimmanage-main.zip HTTP/1.1" 200 56207514 ...
    

Gemini_Generated_Image_7zxoei7zxoei7zxo


题目44:嫌疑人项目中git配置的远程服务器地址是多少?

题目要求192.168.1.1

✅ 答案

172.23.194.159

🔧 解题步骤

# 在服务器检材二中搜索git配置文件
find / -path "*/.git/config" -exec grep -H "url" {} \;

image-20251126213739896

Gemini_Generated_Image_v3eza7v3eza7v3ez


题目45:嫌疑人后台管理服务的端口是多少?

题目要求:仅数字

✅ 答案

8000

🔧 解题步骤

  1. 启动Docker容器

    # 启动后台管理服务容器
    docker start nginx-admin
    
  2. 验证服务
    浏览器打开 http://服务器检材二:8000/ 访问后台管理服务

image-20251127010915508

Gemini_Generated_Image_uyqpjhuyqpjhuyqp


题目46:嫌疑人后台管理服务使用的spring boot框架版本是多少?

题目要求1.0.0

✅ 答案

1.5.8

🔧 解题步骤

方法一:运行jar包查看版本

# 进入服务目录
cd /home/CCY/oim-server-manage/

# 尝试运行查看版本信息
java -Xms512m -Xmx2048m -jar oim-server-manage-server.jar

image-20251126220243353

方法二:使用JD-GUI查看

# 下载jar包到本地分析
# /home/CCY/oim-server-manage/oim-server-manage-server.jar
# 使用JD-GUI工具查看Spring Boot版本信息

image-20251126220304860

Gemini_Generated_Image_pt5eojpt5eojpt5e


题目47:后台管理系统中管理员存储在的哪张表中?

题目要求:按实际值填写

✅ 答案

im_user

🔧 解题步骤

  1. 获取数据库备份

    • GitLab的db仓库中有CCY.sql文件
    • 下载到本地或服务器检材二
      image-20251126224129086
  2. 修改MySQL数据库root密码

    # 开启跳过密码验证模式
    docker exec mysql_master sh -c 'echo "skip-grant-tables" >> /etc/mysql/mysql.conf.d/mysqld.cnf'
    
    # 重启容器
    docker restart mysql_master
    
    # 免密进入并重置密码
    docker exec -it mysql_master mysql -u root
    
    USE mysql;
    
    UPDATE user SET authentication_string=PASSWORD('123789') WHERE User='root';
    
    FLUSH PRIVILEGES;
    
    quit
    
    # 恢复配置文件
    
    docker exec mysql_master sed -i '/skip-grant-tables/d' /etc/mysql/mysql.conf.d/mysqld.cnf
    
    # 重启容器回到正常模式
    
    docker restart mysql_master
    

    image-20251126224842014

  3. 导入数据库备份

    # 创建数据库
    docker exec -it mysql_master mysql -u root -p123789 -e "CREATE DATABASE IF NOT EXISTS CCY DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;"
    
    # 导入SQL文件
    docker exec -i mysql_master mysql -u root -p123789 CCY < /root/CCY.sql
    
  4. 修复jar包依赖

    # 进入服务目录
    cd /home/CCY/oim-server-manage
    
    # 创建修复目录
    mkdir fix_el_v2
    cd fix_el_v2
    
    # 解压jar包
    cp ../oim-server-manage-server.jar .
    jar -xvf oim-server-manage-server.jar
    rm -rf oim-server-manage-server.jar
    
    # 下载缺失的javax.el依赖
    # 下载 https://repo1.maven.org/maven2/javax/el/javax.el-api/2.2.5/javax.el-api-2.2.5.jar 
    # 下载 https://repo1.maven.org/maven2/org/glassfish/web/javax.el/2.2.6/javax.el-2.2.6.jar
    # 将 javax.el-api-2.2.5.jar 和 javax.el-2.2.6.jar 放入 /home/CCY/oim-server-manage/fix_el_v2/BOOT-INF/lib 目录
    
    # 重新打包
    jar -cfM0 ../oim-fixed-v2.jar .
    cd ..
    
    # 启动修复后的服务
    java -Xms512m -Xmx2048m -jar oim-fixed-v2.jar \
      --spring.datasource.url="jdbc:mysql://127.0.0.1:3307/CCY?useUnicode=true&characterEncoding=utf8&useSSL=false" \
      --spring.datasource.username=root \
      --spring.datasource.password=123789 \
      --redis.host=127.0.0.1 \
      --redis.port=6379 \
      --redis.password=ccy-im123
    
  5. 开启MySQL general_log

    # 进入MySQL
    docker exec -it mysql_master mysql -u root -p123789
    
    # 开启通用日志
    set global general_log = ON;
    set global general_log_file='/tmp/general.log';
    quit
    
    # 监控日志
    docker exec -it mysql_master tail -f /tmp/general.log
    
  6. 分析数据库操作

    • 浏览器访问 http://服务器检材二虚拟机IP:8000

    • 随便登录查看日志中的SQL操作

    • 确认管理员信息存储在 im_user 表中

image-20251127021240974

image-20251127021445361

Gemini_Generated_Image_ax0ehbax0ehbax0e


题目48:后台管理系统中共有多少删除的用户?

题目要求:仅数字

✅ 答案

510

🔧 解题步骤

  1. 启动相关服务

    # 启动各个服务
    /home/CCY/oim-server-im-server/startup.sh
    /home/CCY/oim-server-message-server/startup.sh
    /home/CCY/oim-server-push-msg-server/startup.sh
    /home/CCY/oim-server-social-server/startup.sh
    
  2. 测试用户登录

    • 浏览器访问 http://服务器检材二虚拟机IP
      image-20251127013902783
    • 选择账户登录
    • 测试用户:sw23914 密码:sw23914

    image-20251127013950798

  3. 分析用户状态标识

    • 查看general_log中发现flag='1'表示正常用户
    • flag='0'表示删除用户
      image-20251127015118288
  4. 测试 flag=‘0’ 用户

    # 测试用户:AA369 密码:123456cyh
    

    image-20251127014259059
    image-20251127014342321

    # 测试用户:A1S3F4 密码:1342848
    

    image-20251127014549476
    image-20251127014700270

  5. 最后再测试个 flag=‘1’ 用户

 # 测试用户:nihaotest1200 密码:123456

image-20251127015017823
image-20251127015002361

  1. 统计删除用户数量

    SELECT COUNT(*) FROM `im_user` WHERE flag='0';
    

    image-20251127015212729

    Gemini_Generated_Image_dxskl4dxskl4dxsk


题目49:嫌疑平台中用户xinchao参与管理的最早的群的群名是什么?

题目要求:按实际值填写

✅ 答案

测试

🔧 解题步骤

  1. 查找用户信息

    -- 使用Navicat在数据库中搜索 xinchao 
    -- 获得用户ID:cb7e10f9-6e29-464a-aa96-748ef4fb9e7b
    
  2. 获取用户密码

    -- 查看用户密码(密码一眼123456)
    SELECT account, password FROM `im_user`
    WHERE id='cb7e10f9-6e29-464a-aa96-748ef4fb9e7b';
    
  3. Web界面验证

    • 浏览器访问 http://服务器检材二虚拟机IP
    • 使用账号:wwwww5 密码:123456 登录
    • 进入"群聊" → “我管理的群”
    • 发现三个群:测试(群简介:群链接1)菲律宾

image-20251127020049777

  1. 数据库确认最早的群

    -- 查询xinchao管理的群,按创建时间排序
    SELECT * FROM `im_group`
    WHERE name IN ('测试', '你', '菲律宾')
    ORDER BY createTime ASC;
    

    image-20251127020845013

    Gemini_Generated_Image_g4io4gg4io4gg4io


题目50:分析Elasticsearch索引数据中群消息有几条?

题目要求:仅数字

✅ 答案

3

🔧 解题步骤

  1. 获取Elasticsearch配置

    # 进入消息服务器目录
    cd /home/CCY/oim-server-message-server
    
    # 解压jar包查看配置
    unzip oim-server-message-server-0.0.1.jar
    
    # 查看配置文件
    vi /home/CCY/oim-server-message-server/BOOT-INF/classes/application-dev.yml
    

    image-20251126223233143

  2. 启动Elasticsearch服务

    # 启动Elasticsearch容器
    docker start adoring_fermat
    
  3. 查询Elasticsearch索引

    # 查看所有索引
    curl -u elastic:ccy#@132 -X GET "http://127.0.0.1:9200/_cat/indices?v"
    

    image-20251126222912442

    Gemini_Generated_Image_bjdkljbjdkljbjdk


题目51:分析用户"小雨末"的手机号是?

题目要求:11位数字

✅ 答案

14499466022

🔧 解题步骤

  1. 搜索用户信息

    -- 使用Navicat在数据库中搜索 小雨末
    
    -- 获得用户ID:76d866ae418946cba6eec6bc423613ed
    
  2. 查询手机号

    -- 查询用户手机号
    SELECT mobile FROM `im_user`
    WHERE id='76d866ae418946cba6eec6bc423613ed';
    

    image-20251127021706612

    Gemini_Generated_Image_5fa5qj5fa5qj5fa5


题目52:分析嫌疑平台中贷款利息是百分之多少?

题目要求:0.1

✅ 答案

0.8

🔧 解题步骤

数据库搜索

-- 使用Navicat在数据库中搜索 利息

-- 或者在CCY.sql备份文件中直接搜索

image-20251126230707330

Gemini_Generated_Image_jdwrldjdwrldjdwr


📚 常用命令速查

系统服务管理

# 查看开机自启动服务数量
systemctl list-unit-files --type=service --state=enabled --no-legend | wc -l

# 关闭防火墙
systemctl stop firewalld

# 重启网卡
service network restart

GitLab相关

# 查看GitLab配置
cat /etc/gitlab/gitlab.rb | grep external_url

# 进入GitLab控制台
gitlab-rails console -e production

# GitLab数据库查询
gitlab-psql -c "SQL语句"

# Git日志查看
find /var/log/gitlab -name "*.gz" -exec zgrep "关键词" {} \;

Docker容器管理

# 启动容器
docker start container_name

# 进入容器
docker exec -it container_name bash

# MySQL容器操作
docker exec -it mysql_master mysql -u root -p密码

数据库操作

# 开启MySQL通用日志
set global general_log = ON;
set global general_log_file='/tmp/general.log';

# 查看日志
tail -f /tmp/general.log;

# 数据库导入
docker exec -i mysql_master mysql -u root -p密码 数据库名 < 文件.sql

Elasticsearch操作

# 查看索引
curl -u 用户名:密码 -X GET "http://localhost:9200/_cat/indices?v"

# 查询文档数量
curl -u 用户名:密码 -X GET "http://localhost:9200/索引名/_count"

📂 关键文件路径

GitLab相关

  • GitLab配置/etc/gitlab/gitlab.rb
  • GitLab日志/var/log/gitlab/
  • Git仓库/opt/gitlab-ce/git-data/repositories/

服务器检材二相关

  • 后台管理服务/home/CCY/oim-server-manage/
  • 即时通讯服务/home/CCY/oim-server-im-server/
  • 消息服务/home/CCY/oim-server-message-server/
  • 数据库备份:CCY.sql(在GitLab仓库中)

系统配置

  • 网卡配置/etc/sysconfig/network-scripts/ifcfg-ens33
  • 主机配置/etc/hosts

🎓 学习价值

技能要求

  1. 系统管理:Linux系统管理、网络配置、服务管理
  2. 容器技术:Docker容器操作、容器网络配置
  3. 数据库技能:MySQL、PostgreSQL、Elasticsearch
  4. 应用分析:Spring Boot应用、GitLab平台、即时通讯系统
  5. 日志分析:系统日志、应用日志、访问日志分析

涉及技术栈

  • 操作系统:CentOS/RedHat Linux
  • 容器化:Docker、Docker Compose
  • 数据库:MySQL、PostgreSQL、Elasticsearch、Redis
  • Web应用:GitLab、Spring Boot、Nginx
  • 版本控制:Git、GitLab
  • 即时通讯:微服务架构的IM系统

取证技能

  • 服务器取证:系统服务分析、用户行为追踪
  • 应用取证:数据库分析、日志挖掘、配置文件解析
  • 网络取证:网络配置分析、访问日志分析
  • 容器取证:Docker容器分析、容器网络取证

📝 总结

本文档完整解析了2025数证杯决赛团体赛服务器取证的17道题目,涵盖了系统管理、GitLab取证、数据库分析、容器技术、应用分析等多个技术领域。

通过这些题目的解答,可以掌握:

  • 现代企业服务器环境的取证方法
  • GitLab平台的安全分析技巧
  • 微服务架构的应用取证方法
  • 多种数据库系统的分析技能
  • 容器化环境的取证技术

本文档不仅提供了题目的标准答案,更重要的是展示了解题思路和方法论,为数字取证从业者和网络安全学习者提供了宝贵的实战经验。

感谢提供检材和题目的小伙伴,以及所有为技术进步而努力的同仁们!


🧡 感谢

最后感谢提供检材和题目的小伙伴,另外感谢每个日日夜夜一起研究技术的小伙伴们。

image-20231120211033162

退回首页 留下一言