2025数证杯决赛团体赛服务器解析 - yagami
https://www.yagami.vip/archives/2025-shu-zheng-bao-jue-sai-tuan-ti-sai-fu-wu-qi-jie-xi

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

                            发表于 5 月前
共 4,056 字、阅读约 
                            13
                        分钟
2025数证杯决赛团体赛服务器解析
文档简介
：本文档详细解析2025数证杯决赛团体赛服务器取证题目，包含17道题目（题目36-52）的完整解答过程。
适用对象
：数字取证从业者、网络安全专业学生、竞赛参赛选手
难度等级
：高级
预计完成时间
：4-6小时
参考来源
：部分参考
取证与溯源
公众号文章
📋 环境配置指南
🔧 网络配置
判断服务器原IP设置
# 查看网卡配置文件
/etc/sysconfig/network-scripts/ifcfg-ens33
# 查看hosts文件
/etc/hosts
配置VMware虚拟网络
将NAT模式的子网段改为：
172.23.194.0
DHCP起始地址改为：
172.23.194.157
🚀 虚拟机启动顺序
依次仿真启动：
服务器检材二.E01
服务器检材一.E01
🔧 网络问题排查
问题
：服务器检材一.E01启动后没有获取IP
解决方案一：添加网卡
在VMware中为此虚拟机再添加一块网卡
解决方案二：修改网卡配置
# 编辑网卡配置文件
vi /etc/sysconfig/network-scripts/ifcfg-ens33

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

# 重启网卡
service network restart
💡
重要提示
：配置网卡是服务器仿真的第一步。根据实际情况选择合适的方式：增加删除修改网卡配置文件、VMware中添加网卡、或使用命令配置。
配置完成后，使用SSH客户端连接服务器，正式进入环境重构答题环节。
📝 题目解析
题目36：systemd管理的服务单元中，配置为开机自启动（enabled状态）的服务数量为多少个？
题目要求
：仅数字
✅ 答案
34
🔧 解题步骤
# 查看所有开机自启动的服务
systemctl list-unit-files --type=service --state=enabled --no-legend | wc -l
题目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"
题目38：gitlab的服务端口是多少？
题目要求
：仅数字
✅ 答案
9999
🔧 解题步骤
# 查看GitLab配置文件中的端口设置
cat /etc/gitlab/gitlab.rb | grep external_url
题目39：GitLab日志中记录的登录失败次数为多少次？
题目要求
：仅数字
✅ 答案
6
🔧 解题步骤
提取日志文件
从服务器检材一.E01镜像中提取：
/var/log/gitlab/gitlab-rails/application_json.log
搜索登录失败记录
# 在日志文件中搜索关键字Failed Login
题目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
方法二：通过命令行查看
# 查询root用户的加密密码
gitlab-psql -c "SELECT username, encrypted_password FROM users WHERE username = 'root';"
使用Hashcat破解
：
# 使用掩码攻击破解
hashcat -a 3 -m 3200 "$2a$10$joK1mu.0whkjO8IvGSG/X.wVlUofNpX6hplpT85SQjdp.Dg0l7AKO" abc?d?d?d?d?d?d
# 显示破解结果
hashcat --show -m 3200 "$2a$10$joK1mu.0whkjO8IvGSG/X.wVlUofNpX6hplpT85SQjdp.Dg0l7AKO"
验证步骤
：
关闭防火墙：
systemctl stop firewalld
浏览器访问：
http://服务器检材一.E01虚拟机IP:9999/
使用账号
root
，密码
abc123654
登录验证
题目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
方法二：Web界面方式
进入GitLab Web界面
点击左侧菜单
Code
→
Commits
找到
Initial commit
鼠标悬停在时间显示上查看具体时间
题目42：root用户的电子邮件是多少？
题目要求
：
[email protected]
✅ 答案
[email protected]
🔧 解题步骤
方法一：通过GitLab控制台查看
# 进入GitLab控制台
gitlab-rails console -e production

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

# 查看邮箱
user.email
方法二：通过命令行查看
# 查询root用户的邮箱
gitlab-psql -c "SELECT email FROM users WHERE username = 'root';"
方法三：通过Web界面查看
进入GitLab Web界面
点击左上角绿色用户头像
选择
Edit Profile
查看邮箱信息
题目43：已知git仓库被某人下载了并对外传播，请问该用户的用户名是什么？
题目要求
：按实际值填写
✅ 答案
Mia
🔧 解题步骤
搜索GitLab日志
# 在GitLab日志中搜索oimmanage相关的下载记录
find /var/log/gitlab -name "*.gz" -print0 | xargs -0 zgrep -i "oimmanage" | grep -E "archive|git-upload-pack"
分析日志记录
在日志文件
/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"
}
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 ...
题目44：嫌疑人项目中git配置的远程服务器地址是多少？
题目要求
：
192.168.1.1
✅ 答案
172.23.194.159
🔧 解题步骤
# 在服务器检材二中搜索git配置文件
find / -path "*/.git/config" -exec grep -H "url" {} \;
题目45：嫌疑人后台管理服务的端口是多少？
题目要求
：仅数字
✅ 答案
8000
🔧 解题步骤
启动Docker容器
# 启动后台管理服务容器
docker start nginx-admin
验证服务
浏览器打开
http://服务器检材二:8000/
访问后台管理服务
题目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
方法二：使用JD-GUI查看
# 下载jar包到本地分析
# /home/CCY/oim-server-manage/oim-server-manage-server.jar
# 使用JD-GUI工具查看Spring Boot版本信息
题目47：后台管理系统中管理员存储在的哪张表中？
题目要求
：按实际值填写
✅ 答案
im_user
🔧 解题步骤
获取数据库备份
GitLab的db仓库中有CCY.sql文件
下载到本地或服务器检材二
修改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
导入数据库备份
# 创建数据库
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
修复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
开启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
分析数据库操作
浏览器访问
http://服务器检材二虚拟机IP:8000
随便登录查看日志中的SQL操作
确认管理员信息存储在
im_user
表中
题目48：后台管理系统中共有多少删除的用户？
题目要求
：仅数字
✅ 答案
510
🔧 解题步骤
启动相关服务
# 启动各个服务
/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
测试用户登录
浏览器访问
http://服务器检材二虚拟机IP
选择账户登录
测试用户：
sw23914
密码：
sw23914
分析用户状态标识
查看general_log中发现
flag='1'
表示正常用户
flag='0'
表示删除用户
测试 flag=‘0’ 用户
# 测试用户：AA369 密码：123456cyh
# 测试用户：A1S3F4 密码：1342848
最后再测试个 flag=‘1’ 用户
# 测试用户：nihaotest1200 密码：123456
统计删除用户数量
SELECT COUNT(*) FROM `im_user` WHERE flag='0';
题目49：嫌疑平台中用户xinchao参与管理的最早的群的群名是什么？
题目要求
：按实际值填写
✅ 答案
测试
🔧 解题步骤
查找用户信息
-- 使用Navicat在数据库中搜索 xinchao 
-- 获得用户ID：cb7e10f9-6e29-464a-aa96-748ef4fb9e7b
获取用户密码
-- 查看用户密码（密码一眼123456）
SELECT account, password FROM `im_user`
WHERE id='cb7e10f9-6e29-464a-aa96-748ef4fb9e7b';
Web界面验证
浏览器访问
http://服务器检材二虚拟机IP
使用账号：
wwwww5
密码：
123456
登录
进入"群聊" → “我管理的群”
发现三个群：
测试(群简介：群链接1)
、
你
、
菲律宾
数据库确认最早的群
-- 查询xinchao管理的群，按创建时间排序
SELECT * FROM `im_group`
WHERE name IN ('测试', '你', '菲律宾')
ORDER BY createTime ASC;
题目50：分析Elasticsearch索引数据中群消息有几条？
题目要求
：仅数字
✅ 答案
3
🔧 解题步骤
获取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
启动Elasticsearch服务
# 启动Elasticsearch容器
docker start adoring_fermat
查询Elasticsearch索引
# 查看所有索引
curl -u elastic:ccy#@132 -X GET "http://127.0.0.1:9200/_cat/indices?v"
题目51：分析用户"小雨末"的手机号是？
题目要求
：11位数字
✅ 答案
14499466022
🔧 解题步骤
搜索用户信息
-- 使用Navicat在数据库中搜索 小雨末

-- 获得用户ID：76d866ae418946cba6eec6bc423613ed
查询手机号
-- 查询用户手机号
SELECT mobile FROM `im_user`
WHERE id='76d866ae418946cba6eec6bc423613ed';
题目52：分析嫌疑平台中贷款利息是百分之多少？
题目要求
：0.1
✅ 答案
0.8
🔧 解题步骤
数据库搜索
-- 使用Navicat在数据库中搜索 利息

-- 或者在CCY.sql备份文件中直接搜索
📚 常用命令速查
系统服务管理
# 查看开机自启动服务数量
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
🎓 学习价值
技能要求
系统管理
：Linux系统管理、网络配置、服务管理
容器技术
：Docker容器操作、容器网络配置
数据库技能
：MySQL、PostgreSQL、Elasticsearch
应用分析
：Spring Boot应用、GitLab平台、即时通讯系统
日志分析
：系统日志、应用日志、访问日志分析
涉及技术栈
操作系统
：CentOS/RedHat Linux
容器化
：Docker、Docker Compose
数据库
：MySQL、PostgreSQL、Elasticsearch、Redis
Web应用
：GitLab、Spring Boot、Nginx
版本控制
：Git、GitLab
即时通讯
：微服务架构的IM系统
取证技能
服务器取证
：系统服务分析、用户行为追踪
应用取证
：数据库分析、日志挖掘、配置文件解析
网络取证
：网络配置分析、访问日志分析
容器取证
：Docker容器分析、容器网络取证
📝 总结
本文档完整解析了2025数证杯决赛团体赛服务器取证的17道题目，涵盖了系统管理、GitLab取证、数据库分析、容器技术、应用分析等多个技术领域。
通过这些题目的解答，可以掌握：
现代企业服务器环境的取证方法
GitLab平台的安全分析技巧
微服务架构的应用取证方法
多种数据库系统的分析技能
容器化环境的取证技术
本文档不仅提供了题目的标准答案，更重要的是展示了解题思路和方法论，为数字取证从业者和网络安全学习者提供了宝贵的实战经验。
感谢提供检材和题目的小伙伴，以及所有为技术进步而努力的同仁们！
🧡 感谢
最后感谢提供检材和题目的小伙伴，另外感谢每个日日夜夜一起研究技术的小伙伴们。
退回首页
留下一言
