2025数证杯决赛团体赛服务器解析
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

- 将NAT模式的子网段改为:
🚀 虚拟机启动顺序
依次仿真启动:
- 服务器检材二.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'表示删除用户

- 查看general_log中发现
-
测试 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平台的安全分析技巧
- 微服务架构的应用取证方法
- 多种数据库系统的分析技能
- 容器化环境的取证技术
本文档不仅提供了题目的标准答案,更重要的是展示了解题思路和方法论,为数字取证从业者和网络安全学习者提供了宝贵的实战经验。
感谢提供检材和题目的小伙伴,以及所有为技术进步而努力的同仁们!
🧡 感谢
最后感谢提供检材和题目的小伙伴,另外感谢每个日日夜夜一起研究技术的小伙伴们。
