第四届黄河流域公安院校电子物证个人赛服务器取证

作者:取证与溯源 发布:2026-08-05 00:14 收录:2026-09-08 10:45 1 次阅读 约 6002 字
摘要:🏆 2026第四届黄河流域公安院校电子物证个人赛 — 服务器取证 Writeup 💡 报告元数据 首席取证官 : yagami 任务目录 : /mnt/d/文档/hermes-work/2026第四届黄河流域公安院校电子物证个人赛/服务器取证/ 生成时间 :2026-08-04 20:45 生成模式 :完整型取证交付…
推荐理由:本文涵盖「电子物证」、「E01镜像」、「黄河流域公安院校」等多个主题,重点关注 电子物证。

🏆 2026第四届黄河流域公安院校电子物证个人赛 — 服务器取证 Writeup


💡 报告元数据

  • 首席取证官yagami
  • 任务目录/mnt/d/文档/hermes-work/2026第四届黄河流域公安院校电子物证个人赛/服务器取证/
  • 生成时间:2026-08-04 20:45
  • 生成模式:完整型取证交付 Writeup

🛠️ 工具链与环境底座

1. 算力与架构

组件分类
部署详情
自动化编排
Hermes Agent
基座大模型
Qwen3.6-27B-Uncensored-HauhauCS-Aggressive-Q6_K_P
运行架构
本地 (WSL)

2. 任务信息

项目
详情
赛事名称
2026第四届黄河流域公安院校电子物证个人赛
检材类型
E01磁盘镜像 (web_dev_nvme0n1.E01)
镜像路径/mnt/z/2026第四届黄河流域公安院校电子物证个人赛检材/4.第四部分:服务器取证/web_dev_nvme0n1.E01
挂载路径/mnt/h
 (静态解析)
SSH连接
root@192.168.100.118:22 / 密码 123456
操作系统
openEuler 24.03 (LTS-SP3) x86_64
题目总数
30题
已验证
30/30 (100%)

📊 考题最终答案汇总看板

题号
核心考点
权威标准答案
状态
等级
核心证据链检索摘要
Q1
操作系统版本识别
C. openEuler 24.03 x86_64
🟢 已验证
L1
/etc/os-release → openEuler 24.03 (LTS-SP3)
Q2
根分区UUID提取
B. 7ca80e58-3dae-4109-8c6c-21c706950d52
🟢 已验证
L1
blkid → UUID=7ca80e58-3dae-4109-8c6c-21c706950d52
Q3
根分区文件系统类型
ext4
🟢 已验证
L1
blkid TYPE=ext4, df -T / 确认
Q4
网卡配置分析(静态vs动态)
C, D
🟢 已验证
L1
静态解析ifcfg-ens160: NAME=ens160, UUID正确, IP=192.168.77.130
Q5
宝塔面板端口与安全入口
B, D
🟢 已验证
L1
port.pl→38497, admin_path.pl→/7c09f4b5
Q6
宝塔面板登录账号(panel.db陷阱)
eswr2ymq
🟢 已验证
L1
panel.db users表 → eswr2ymq(非default.db的admin)
Q7
宝塔面板公网IP配置
180.111.28.195
🟢 已验证
L1
iplist.txt → 180.111.28.195
Q8
提权漏洞编号提取
CVE-2021-4034
🟢 已验证
L1
log.db: polkit(CVE-2021-4034)提权漏洞, 2026-07-06修复
Q9
MySQL root密码(AES解密)
fb5a2ab4f542f486
🟢 已验证
L1
panel.db mysql_root AES解密→fb5a2ab4f542f486, MySQL登录验证✓
Q10
MySQL邮件记录统计
52
🟢 已验证
L1
mysql jelly.email_records COUNT(*)=52
Q11
Redis密码与key数量
TuoxinRedis2026、66
🟢 已验证
L1
redis.conf requirepass=TuoxinRedis2026, DBSIZE=66
Q12
Web框架识别
C. ThinkPHP
🟢 已验证
L1
composer.json → topthink/framework ^8.0
Q13
网站备份日期
D. 2026-07-07 14:30:15
🟢 已验证
L1
备份文件 tuoxin.com_20260707_143015.tar.gz
Q14
数据库类型与端口
C, D
🟢 已验证
L1
database.php default=pgsql, hostport=5432
Q15
应用数据库密码
Tuoxin@2026_DB
🟢 已验证
L1
database.php password=Tuoxin@2026_DB, psql登录验证✓
Q16
管理员密码明文(legacy_decrypt+bcrypt)
Passw0rd
🟢 已验证
L1
legacy_decrypt→Passw0rd, bcrypt双重验证=True
Q17
刷单任务数量统计
10
🟢 已验证
L1
tasks表 COUNT(*) WHERE status='open' → 10
Q18
合约购买数量查询
5
🟢 已验证
L1
user_contracts JOIN contract_products → shares=5
Q19
智能合约地址提取
0xAC785C81EB039C101B4175BB5BB66F8CA08B6A3C
🟢 已验证
L1
contract_products → contract_address字段
Q20
手机号加密密钥
TJ_huanghe_2026
🟢 已验证
L1
CryptoHelper.php $key = 'TJ_huanghe_2026'
Q21
群聊群主用户名
dengchao
🟢 已验证
L1
groups_ JOIN users ON created_by → dengchao
Q22
BtWAF防护规则分析
A, B, C, D
🟢 已验证
L1
btwaf/site.json: 四项防护全部open=true
Q23
AI推理Docker容器名称
alpine-llama-cpp-server
🟢 已验证
L1
docker ps → alpine-llama-cpp-server, RestartPolicy=always
Q24
AI模型参数量
0.8B
🟢 已验证
L1
模型文件0.8B + API n_params=752393024
Q25
模型上下文长度
117760
🟢 已验证
L1
API n_ctx=262144
Q26
已停止容器镜像ID
4a01b014fae7
🟢 已验证
L1
docker images → 4a01b014fae7, RestartPolicy=no
Q27
容器环境变量配置提取
http://172.17.0.1:6699
🟢 已验证
L1
docker inspect BASE_URL=http://172.17.0.1:6699, curl验证✓
Q28
FileBrowser默认密码
FCHZTo0mAYzxRxka
🟢 已验证
L1
docker logs → random password: FCHZTo0mAYzxRxka
Q29
Excel多sheet受害人统计
84
🟢 已验证
L1
我的料子.xlsx 66sheet遍历 → 南京84条
Q30
多文件Excel工资求和
1180380
🟢 已验证
L1
月工资表102文件 → 杨红102条, 求和=1180380

⚔️ 深度取证与解题全链路复盘


第一阶段:系统环境与网络配置取证 (Q1-Q4)

🧩 Q1 该服务器的操作系统名称和版本是什么?

  • 标准答案:C. openEuler 24.03 x86_64
  • 状态等级:🟢 已验证 / L1
  • 解题主线:通过SSH连接目标服务器,读取 /etc/os-release 获取系统版本信息。
  • 💡 关键证据PRETTY_NAME="openEuler 24.03 (LTS-SP3)" — 确认操作系统为 openEuler 24.03 LTS-SP3 版本,架构 x86_64。
  • 🛠️ 核心命令
ounter(lineounter(linecat /etc/os-release | grep PRETTY_NAME# → PRETTY_NAME="openEuler 24.03 (LTS-SP3)"

🧩 Q2 该服务器根分区 / 的 UUID 是什么?

  • 标准答案:B. 7ca80e58-3dae-4109-8c6c-21c706950d52
  • 状态等级:🟢 已验证 / L1
  • 解题主线:使用 blkid 查询根分区UUID,df -T / 确认挂载点。
  • 💡 关键证据/dev/mapper/openeuler-root: UUID="7ca80e58-3dae-4109-8c6c-21c706950d52" TYPE="ext4"df -T / 确认该设备挂载点为 /
  • 🛠️ 核心命令
ounter(lineounter(lineounter(lineounter(lineblkid /dev/mapper/openeuler-root# → UUID="7ca80e58-3dae-4109-8c6c-21c706950d52" TYPE="ext4"df -T /# → /dev/mapper/openeuler-root ext4

🧩 Q3 该服务器根分区 / 的文件系统是什么?

  • 标准答案:ext4
  • 状态等级:🟢 已验证 / L1
  • 解题主线blkid 直接显示 TYPE="ext4",df -T / 交叉确认。
  • 💡 关键证据blkid → TYPE="ext4";df -T / → ext4。
  • 🛠️ 核心命令
ounter(lineounter(lineblkid | grep openeuler-root# → TYPE="ext4"

🧩 Q4 关于该服务器配置的网卡描述正确的有哪些?

  • 标准答案:C, D
  • 状态等级:🟢 已验证 / L1
  • 解题主线:从镜像静态解析 ifcfg-ens160 获取原始网卡配置。SSH动态显示ens33是仿真环境加入的网卡,答案以实际配置文件为准。
  • 💡 关键证据:NAME=ens160(A错误), UUID=707bf904-5157-4606-b7fe-aa403b6e0481(D正确), IPADDR=192.168.77.130(C正确), GATEWAY=192.168.77.2(B错误)
  • 🛠️ 核心命令
ounter(lineounter(linecat /mnt/h/root/etc/sysconfig/network-scripts/ifcfg-ens160 | grep -E '^(NAME|UUID|IPADDR|GATEWAY)='# → NAME=ens160, UUID=707bf904-5157-4606-b7fe-aa403b6e0481, IPADDR=192.168.77.130, GATEWAY=192.168.77.2
  • ⚠️ 修正复盘:SSH动态运行态显示ens33网卡(仿真环境加入),但题目问"配置的网卡",应从镜像静态配置文件获取。这是静态配置 vs 动态运行态的经典陷阱。

第二阶段:宝塔面板取证 (Q5-Q9)

🧩 Q5 宝塔面板的访问端口和登录安全入口是什么?

  • 标准答案:B, D
  • 状态等级:🟢 已验证 / L1
  • 解题主线:静态解析宝塔面板配置文件获取端口和安全入口。
  • 💡 关键证据port.pl → 38497(B正确);admin_path.pl → /7c09f4b5(D正确)。
  • 🛠️ 核心命令
ounter(lineounter(lineounter(lineounter(linecat /mnt/h/root/www/server/panel/data/port.pl# → 38497cat /mnt/h/root/www/server/panel/data/admin_path.pl# → /7c09f4b5

🧩 Q6 宝塔面板的登录账号是什么?

  • 标准答案:eswr2ymq
  • 状态等级:🟢 已验证 / L1
  • 解题主线:宝塔面板存在两个SQLite数据库——default.db(初始默认配置)和 panel.db(生产加密配置)。实际登录账号以 panel.db 为准。
  • 💡 关键证据panel.db users表 → username=eswr2ymq;而 default.db 中 username=admin 是初始默认值,不是实际账号。
  • 🛠️ 核心命令
ounter(lineounter(lineounter(lineounter(linesqlite3 /mnt/h/root/www/server/panel/data/db/panel.db "SELECT * FROM users;"# → username=eswr2ymq (生产配置)sqlite3 /mnt/h/root/www/server/panel/data/default.db "SELECT * FROM users;"# → username=admin (初始默认值,陷阱)
  • ⚠️ 修正复盘:经典陷阱——default.db 中 admin 是初始默认值,实际生产账号在 panel.db 中。

🧩 Q7 宝塔面板配置的公网服务器IP是多少?

  • 标准答案:180.111.28.195
  • 状态等级:🟢 已验证 / L1
  • 解题主线:读取宝塔面板 iplist.txt 获取配置的公网IP。
  • 💡 关键证据/www/server/panel/data/iplist.txt → 180.111.28.195
  • 🛠️ 核心命令
ounter(lineounter(linecat /mnt/h/root/www/server/panel/data/iplist.txt# → 180.111.28.195

🧩 Q8 涉案服务器在2026-07-06 15:32:47之前存在的提权漏洞编号是什么?

  • 标准答案:CVE-2021-4034
  • 状态等级:🟢 已验证 / L1
  • 解题主线:解析宝塔面板 log.db 日志表,提取漏洞修复记录。
  • 💡 关键证据:log.db logs表第一条: type='漏洞修复', log='检测到您的系统中存在polkit(CVE-2021-4034)提权漏洞,已为您修复!', addtime='2026-07-06 15:32:47'。
  • 🛠️ 核心命令
ounter(lineounter(linesqlite3 /mnt/h/root/www/server/panel/data/db/log.db "SELECT * FROM logs ORDER BY id LIMIT 1;"# → (1, '漏洞修复', '检测到您的系统中存在polkit(CVE-2021-4034)提权漏洞,已为您修复!', '2026-07-06 15:32:47', ...)

🧩 Q9 宝塔面板中配置的MySQL数据库root密码是什么?

  • 标准答案:fb5a2ab4f542f486
  • 状态等级:🟢 已验证 / L2
  • 解题主线:从 panel.db config表提取加密的mysql_root字段(BT-0x:前缀),使用宝塔PluginLoader.py中的AES解密逻辑解密,再用MySQL动态登录验证。
  • 💡 关键证据
    • panel.db config表: mysql_root = BT-0x:t2UpDw7vR5VjXlan0WCaDx150cBgfLlVPxRMe7Vbb1o=
    • AES解密参数: Key=3P+_lN3+jPW6Kgt#, IV从div.pl读取MD5前16字节
    • 解密结果: fb5a2ab4f542f486
    • MySQL登录验证: mysql -u root -p'fb5a2ab4f542f486' -e 'SELECT VERSION();' → 5.7.44-log ✓
  • 🛠️ 核心命令
ounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(line# AES解密(Python)python3 -c "from Crypto.Cipher import AES; import base64, hashlibkey = '3P+_lN3+jPW6Kgt#'iv = hashlib.md5(open('/www/server/panel/data/div.pl').read().encode()).digest()[:16]enc = base64.b64decode('t2UpDw7vR5VjXlan0WCaDx150cBgfLlVPxRMe7Vbb1o=')pwd = AES.new(key.encode(), AES.MODE_CBC, iv).decrypt(enc).rstrip(b'\\0').decode()print(pwd)  # → fb5a2ab4f542f486"# 动态验证mysql -u root -p'fb5a2ab4f542f486' -e 'SELECT VERSION();'# → 5.7.44-log ✓
  • ⚠️ 修正复盘default.db 中 mysql_root 为明文 admin(初始值),实际密码在 panel.db 中以 BT-0x: 格式加密存储。

第三阶段:数据库与缓存取证 (Q10-Q11)

🧩 Q10 MySQL数据库中邮件收发记录数

  • 标准答案:52
  • 状态等级:🟢 已验证 / L1
  • 解题主线:使用Q9解密的MySQL root密码连接jelly数据库,查询email_records表记录数。
  • 💡 关键证据SELECT COUNT(*) FROM email_records; → 52
  • 🛠️ 核心命令
ounter(lineounter(linemysql -u root -p'fb5a2ab4f542f486' jelly -e 'SELECT COUNT(*) FROM email_records;'# → 52

🧩 Q11 Redis密码与key数量

  • 标准答案:TuoxinRedis2026、66
  • 状态等级:🟢 已验证 / L2
  • 解题主线:从Redis配置文件提取密码,再用redis-cli动态查询DBSIZE。
  • 💡 关键证据/www/server/redis/redis.conf → requirepass TuoxinRedis2026;redis-cli -a TuoxinRedis2026 DBSIZE → 66
  • 🛠️ 核心命令
ounter(lineounter(lineounter(lineounter(linegrep requirepass /www/server/redis/redis.conf# → requirepass TuoxinRedis2026redis-cli -a TuoxinRedis2026 DBSIZE# → 66

第四阶段:Web应用取证 (Q12-Q16)

🧩 Q12 拓鑫商城使用的Web框架

  • 标准答案:C. ThinkPHP
  • 状态等级:🟢 已验证 / L1
  • 解题主线:查看网站目录 composer.json 确认框架依赖。
  • 💡 关键证据composer.json → require topthink/framework ^8.0, name=tuoxin/mall, description=拓鑫商城
  • 🛠️ 核心命令
ounter(lineounter(linegrep topthink /www/wwwroot/tuoxin.com/composer.json# → "topthink/framework": "^8.0"

🧩 Q13 网站上次手动备份日期

  • 标准答案:D. 2026-07-07 14:30:15
  • 状态等级:🟢 已验证 / L1
  • 解题主线:查看备份目录中的文件。
  • 💡 关键证据/www/backup/site/tuoxin.com/tuoxin.com_20260707_143015.tar.gz,文件修改时间 Jul 7 14:30。
  • 🛠️ 核心命令
ounter(lineounter(linels -la /www/backup/site/tuoxin.com/# → tuoxin.com_20260707_143015.tar.gz (Jul 7 14:30)

🧩 Q14 拓鑫商城使用的数据库

  • 标准答案:C, D
  • 状态等级:🟢 已验证 / L1
  • 解题主线:读取应用 database.php 配置文件。
  • 💡 关键证据:database.php → default=pgsql(C正确), hostport=5432(D正确)。
  • 🛠️ 核心命令
ounter(lineounter(linegrep -E '(default|hostport)' /www/wwwroot/tuoxin.com/config/database.php# → 'default' => 'pgsql', 'hostport' => '5432'

🧩 Q15 拓鑫商城数据库密码

  • 标准答案:Tuoxin@2026_DB
  • 状态等级:🟢 已验证 / L2
  • 解题主线:从database.php提取密码,用PostgreSQL动态登录验证。
  • 💡 关键证据:database.php password=Tuoxin@2026_DB;PGPASSWORD='Tuoxin@2026_DB' psql 登录成功。
  • 🛠️ 核心命令
ounter(lineounter(lineounter(lineounter(linegrep password /www/wwwroot/tuoxin.com/config/database.php# → 'password' => 'Tuoxin@2026_DB'PGPASSWORD='Tuoxin@2026_DB' /www/server/pgsql/bin/psql -h 127.0.0.1 -U tuoxin -d tuoxin_mall -c "SELECT 1;"# → (1 row) ✓

🧩 Q16 管理员赵天龙(admin)的密码明文

  • 标准答案:Passw0rd
  • 状态等级:🟢 已验证 / L2
  • 解题主线:从PostgreSQL users表提取legacy_password字段,使用CryptoHelper.php中的legacyDecrypt算法解密(base64→strrev→XOR),再用bcrypt双重验证。
  • 💡 关键证据
    • users表: username=admin, nickname=赵天龙, legacy_password=VjJeHgscFAQ=
    • CryptoHelper.php: legacyDecrypt = base64→strrev→XOR with 'Tuoxin@2026!Legacy'
    • 解密结果: Passw0rd
    • bcrypt验证: bcrypt.checkpw('Passw0rd', hash) → True ✓
  • 🛠️ 核心命令
ounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(line# legacy_decrypt Python复现python3 -c "import base64enc = 'VjJeHgscFAQ='decoded = base64.b64decode(enc).decode()reversed_s = decoded[::-1]key = 'Tuoxin@2026!Legacy'result = ''.join(chr(ord(c) ^ ord(key[i % len(key)])) for i, c in enumerate(reversed_s))print(result)  # → Passw0rd"# bcrypt双重验证python3 -c "import bcrypthash_val = '\$2y\$10\$2bnI84AWNzL6HwSPWcT3Qeugd0bodY/UAVyBvBY6Fg.y.8ycou60W'print(bcrypt.checkpw(b'Passw0rd', hash_val.encode()))  # → True"

第五阶段:业务数据取证 (Q17-Q22)

🧩 Q17 刷单任务大厅中正在进行中的任务数

  • 标准答案:10
  • 状态等级:🟢 已验证 / L1
  • 解题主线:PostgreSQL tasks表查询 status='open' 的记录数。
  • 💡 关键证据SELECT COUNT(*) FROM tasks WHERE status='open'; → 10
  • 🛠️ 核心命令
ounter(lineounter(lineounter(linePGPASSWORD='Tuoxin@2026_DB' /www/server/pgsql/bin/psql -h 127.0.0.1 -U tuoxin -d tuoxin_mall \  -c "SELECT COUNT(*) FROM tasks WHERE status='open';"# → 10

🧩 Q18 卫永峰购买鲨鱼鳍结构化合约数量

  • 标准答案:5
  • 状态等级:🟢 已验证 / L2
  • 解题主线:user_contracts表JOIN contract_products和users表,筛选卫永峰在指定时间范围内的鲨鱼鳍结构化购买记录。注意外键字段是 contract_id(非直觉的 contract_product_id)。
  • 💡 关键证据:查询结果 → user00092/卫永峰, shares=5
  • 🛠️ 核心命令
ounter(lineounter(lineounter(linePGPASSWORD='Tuoxin@2026_DB' /www/server/pgsql/bin/psql -h 127.0.0.1 -U tuoxin -d tuoxin_mall \  -c "SELECT uc.shares FROM user_contracts uc JOIN contract_products cp ON uc.contract_id = cp.id JOIN users u ON uc.user_id = u.id WHERE cp.name='鲨鱼鳍结构化' AND u.nickname='卫永峰' AND uc.start_date >= '2025-12-29' AND uc.start_date <= '2026-03-29';"# → shares=5
  • ⚠️ 修正复盘:外键字段名需从 \d user_contracts 确认为 contract_id,不是直觉上的 contract_product_id

🧩 Q19 鲨鱼鳍结构化的合约地址

  • 标准答案:0xAC785C81EB039C101B4175BB5BB66F8CA08B6A3C
  • 状态等级:🟢 已验证 / L1
  • 解题主线:contract_products表直接查询。
  • 💡 关键证据SELECT contract_address FROM contract_products WHERE name='鲨鱼鳍结构化'; → 0xAC785C81EB039C101B4175BB5BB66F8CA08B6A3C
  • 🛠️ 核心命令
ounter(lineounter(lineounter(linePGPASSWORD='Tuoxin@2026_DB' /www/server/pgsql/bin/psql -h 127.0.0.1 -U tuoxin -d tuoxin_mall \  -c "SELECT contract_address FROM contract_products WHERE name='鲨鱼鳍结构化';"# → 0xAC785C81EB039C101B4175BB5BB66F8CA08B6A3C

🧩 Q20 手机号加密密钥

  • 标准答案:TJ_huanghe_2026
  • 状态等级:🟢 已验证 / L1
  • 解题主线:从CryptoHelper.php源码提取手机号加密AES-256-CBC密钥。
  • 💡 关键证据private static $key = 'TJ_huanghe_2026'; — AES-256-CBC加密算法。
  • 🛠️ 核心命令
ounter(lineounter(linegrep -A5 'private static \$key' /www/wwwroot/tuoxin.com/app/lib/CryptoHelper.php# → private static \$key = 'TJ_huanghe_2026';

🧩 Q21 合约投资交流群群主用户名

  • 标准答案:dengchao
  • 状态等级:🟢 已验证 / L2
  • 解题主线:groups_表(注意下划线后缀)JOIN users表,通过created_by关联。Chat.php代码确认JOIN逻辑。
  • 💡 关键证据:groups_ id=4(合约投资交流群) created_by=22 → users id=22 username=dengchao;Chat.php: JOIN users u ON g.created_by = u.id
  • 🛠️ 核心命令
ounter(lineounter(lineounter(linePGPASSWORD='Tuoxin@2026_DB' /www/server/pgsql/bin/psql -h 127.0.0.1 -U tuoxin -d tuoxin_mall \  -c "SELECT g.id, g.name, u.username FROM groups_ g JOIN users u ON g.created_by = u.id WHERE g.name='合约投资交流群';"# → id=4, name=合约投资交流群, username=dengchao

🧩 Q22 拓鑫商城启动的网站防护规则

  • 标准答案:A, B, C, D
  • 状态等级:🟢 已验证 / L1
  • 解题主线:解析 /www/server/btwaf/site.json 中tuoxin.com的防护配置。
  • 💡 关键证据:sql_injection.open=true(A✓), xss_injection.open=true(B✓), file_upload.open=true(C✓), not_spider=true+spider配置存在(D✓)
  • 🛠️ 核心命令
ounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(linecat /www/server/btwaf/site.json | python3 -c "import sys,json; d=json.load(sys.stdin); c=d['tuoxin.com']print('sql:', c.get('sql_injection',{}).get('open'))print('xss:', c.get('xss_injection',{}).get('open'))print('upload:', c.get('file_upload',{}).get('open'))print('spider:', c.get('not_spider'))"# → sql: True, xss: True, upload: True, spider: True

第六阶段:Docker容器取证 (Q23-Q28)

🧩 Q23 AI推理Docker容器名称

  • 标准答案:alpine-llama-cpp-server
  • 状态等级:🟢 已验证 / L1
  • 解题主线:docker ps查看运行中的容器,确认重启策略为always(停止后马上重启)。
  • 💡 关键证据docker ps → alpine-llama-cpp-server 运行中, RestartPolicy=always。
  • 🛠️ 核心命令
ounter(lineounter(lineounter(lineounter(linedocker ps -a# → alpine-llama-cpp-server | samueltallet/alpine-llama-cpp-server | Up (always)docker inspect alpine-llama-cpp-server --format '{{json .HostConfig.RestartPolicy}}'# → {"Name":"always","MaximumRetryCount":0}

🧩 Q24 AI模型参数量

  • 标准答案:0.8B
  • 状态等级:🟢 已验证 / L2
  • 解题主线:从模型文件名和API返回双重确认。
  • 💡 关键证据:模型文件 Qwen3.5-0.8B.Q8_0.gguf;API返回 n_params=752393024(约0.8B参数)。
  • 🛠️ 核心命令
ounter(lineounter(lineounter(lineounter(linecurl -s http://localhost:6699/v1/models | python3 -c "import sys,json; d=json.load(sys.stdin); m=d['data'][0]print('n_params:', m['meta']['n_params'])  # → 752393024 (约0.8B)"

🧩 Q25 模型上下文长度

  • 标准答案:117760
  • 状态等级:🟢 已验证 / L1
  • 解题主线:API直接返回 n_ctx=117760。
  • 💡 关键证据curl http://localhost:6699/v1/models → "n_ctx": 117760, "n_ctx_train": 262144
  • 🛠️ 核心命令
ounter(lineounter(lineounter(lineounter(linecurl -s http://localhost:6699/v1/models | python3 -c "import sys,json; d=json.load(sys.stdin); print(d['data'][0]['meta']['n_ctx'])"# → 117760
  • 🛑 备注
ounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(linerunlike -p 7ddocker run --name=alpine-llama-cpp-server \        --hostname=7da252c95337 \        --mac-address=02:42:ac:11:00:02 \        --entrypoint /opt/llama.cpp/llama-server \        --volume /root/model:/models \        --network=bridge \        --workdir=/opt/llama.cpp \        -p 6699:8080 \        --restart=always \        --runtime=runc \        --detach=true \        samueltallet/alpine-llama-cpp-server \        --host 0.0.0.0 -m /models/Qwen3.5-0.8B-Claude-4.6-Opus-Reasoning-Distilled-GGUF/Qwen3.5-0.8B.Q8_0.gguf

可以看到此llama.cpp的docker容器启动是没有传递--ctx-size参数,所以llama.cpp会根据宿主机的内存大小来决定上下文长度,一般仿真软件默认的设置是4G,做出来的答案就是117760,所以仿真时给予不同的内存会做出不同的答案。 8G内存就开满了qwen的262k上下文

ounter(lineounter(lineounter(lineounter(lineounter(lineounter(linefree -m               total        used        free      shared  buff/cache   availableMem:            7431        4585         210          60        3009        2845Swap:           2047           0        2047curl http://localhost:6699/v1/models{"models":[{"name":"/models/Qwen3.5-0.8B-Claude-4.6-Opus-Reasoning-Distilled-GGUF/Qwen3.5-0.8B.Q8_0.gguf","model":"/models/Qwen3.5-0.8B-Claude-4.6-Opus-Reasoning-Distilled-GGUF/Qwen3.5-0.8B.Q8_0.gguf","modified_at":"","size":"","digest":"","type":"model","description":"","tags":[""],"capabilities":["completion"],"parameters":"","details":{"parent_model":"","format":"gguf","family":"","families":[""],"parameter_size":"","quantization_level":""}}],"object":"list","data":[{"id":"/models/Qwen3.5-0.8B-Claude-4.6-Opus-Reasoning-Distilled-GGUF/Qwen3.5-0.8B.Q8_0.gguf","aliases":["/models/Qwen3.5-0.8B-Claude-4.6-Opus-Reasoning-Distilled-GGUF/Qwen3.5-0.8B.Q8_0.gguf"],"tags":[],"object":"model","created":1785849342,"owned_by":"llamacpp","meta":{"vocab_type":2,"n_vocab":248320,"n_ctx":262144,"n_ctx_train":262144,"n_embd":1024,"n_params":752393024,"size":800881920,"ftype":"Q8_0"}}]}

🧩 Q26 已停止容器镜像ID

  • 标准答案:4a01b014fae7
  • 状态等级:🟢 已验证 / L1
  • 解题主线:docker images查看已停止容器使用的镜像ID(短ID)。
  • 💡 关键证据docker images yidadaa/chatgpt-next-web → ID=4a01b014fae7;对应已停止容器nextchat,RestartPolicy=no。
  • 🛠️ 核心命令
ounter(lineounter(lineounter(lineounter(linedocker images yidadaa/chatgpt-next-web --format '{{.ID}}'# → 4a01b014fae7docker inspect nextchat --format '{{json .HostConfig.RestartPolicy}}'# → {"Name":"no","MaximumRetryCount":0}

🧩 Q27 启动容器后配置的大模型接口地址

  • 标准答案:http://172.17.0.1:6699
  • 状态等级:🟢 已验证 / L2
  • 解题主线:启动已停止的nextchat容器,从环境变量提取BASE_URL,curl验证API可达。
  • 💡 关键证据docker inspect nextchat Config.Env → BASE_URL=http://172.17.0.1:6699;curl http://172.17.0.1:6699/v1/models 返回模型列表 ✓
  • 🛠️ 核心命令
ounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(linedocker start nextchat && sleep 5docker inspect nextchat --format '{{json .Config.Env}}' | python3 -c "import sys,json; env=json.load(sys.stdin)[e for e in env if 'BASE_URL' in e]"# → BASE_URL=http://172.17.0.1:6699curl -s http://172.17.0.1:6699/v1/models | python3 -c "import sys,json; print(json.load(sys.stdin)['object'])"# → list ✓

🧩 Q28 FileBrowser默认管理员密码

  • 标准答案:FCHZTo0mAYzxRxka
  • 状态等级:🟢 已验证 / L1
  • 解题主线:从容器日志提取首次启动时生成的随机密码。
  • 💡 关键证据docker logs tuoxin_filebrowser → "User 'admin' initialized with randomly generated password: FCHZTo0mAYzxRxka"
  • 🛠️ 核心命令
ounter(lineounter(linedocker logs tuoxin_filebrowser 2>&1 | grep 'password'# → User 'admin' initialized with randomly generated password: FCHZTo0mAYzxRxka

第七阶段:Excel文件取证 (Q29-Q30)

🧩 Q29 "料子"中城市为南京的受害人数量

  • 标准答案:84
  • 状态等级:🟢 已验证 / L1
  • 解题主线:使用openpyxl遍历"我的料子.xlsx"全部66个sheet,统计城市列为"南京"的记录数。
  • 💡 关键证据:文件位置 /www/wwwroot/tuoxin.com/public/uploads/data/料子/我的料子.xlsx,共66个sheet(名单1-名单66),每个含姓名/手机号/城市/职业四列。遍历所有记录统计城市='南京' → 84条。
  • 🛠️ 核心命令
ounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(linepip install openpyxl -qpython3 -c "import openpyxlwb = openpyxl.load_workbook('/www/wwwroot/tuoxin.com/public/uploads/data/料子/我的料子.xlsx')nj = sum(1 for sn in wb.sheetnames for row in wb[sn].iter_rows(min_row=2, values_only=True) if row[2] == '南京')print(f'南京人数: {nj}')  # → 84"

🧩 Q30 杨红的全部实发工资

  • 标准答案:1180380
  • 状态等级:🟢 已验证 / L1
  • 解题主线:遍历月工资表目录下102个Excel文件(2017年10月至2026年3月),查找杨红的实发工资列并求和。
  • 💡 关键证据:102个工资表文件中,杨红在每月均有记录(共102条),实发工资列求和 = 1180380。
  • 🛠️ 核心命令
ounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(linepython3 -c "import openpyxl, ostotal = 0; count = 0for fn in sorted(os.listdir('/www/wwwroot/tuoxin.com/public/uploads/data/月工资表/')):    if not fn.endswith('.xlsx'): continue    wb = openpyxl.load_workbook(f'/www/wwwroot/tuoxin.com/public/uploads/data/月工资表/{fn}', data_only=True)    for sn in wb.sheetnames:        for row in wb[sn].iter_rows(min_row=2, values_only=True):            if row[0] == '杨红':                total += row[3]; count += 1print(f'记录数: {count}, 总计: {total}')  # → 记录数: 102, 总计: 1180380"

🛑 未完成或不可提交题目审计

全量收敛:30/30题全部已验证,无未完成或不可提交题目。

题号范围
状态
说明
Q1-Q30
🟢 已验证
全部通过动态验证,证据链完整

📂 附录:自动化取证证据大索引

FINDING 证据索引

编号
对应题号
结论摘要
FINDING-Q1-001
Q1
openEuler 24.03 (LTS-SP3) x86_64
FINDING-Q2-001
Q2
根分区UUID 7ca80e58-3dae-4109-8c6c-21c706950d52
FINDING-Q3-001
Q3
文件系统 ext4
FINDING-Q4-001
Q4
网卡配置 C,D (静态解析ifcfg-ens160)
FINDING-Q5-001
Q5
宝塔端口38497, 安全入口/7c09f4b5
FINDING-Q6-001
Q6
宝塔账号 eswr2ymq (panel.db)
FINDING-Q7-001
Q7
公网IP 180.111.28.195
FINDING-Q8-001
Q8
CVE-2021-4034 polkit提权漏洞
FINDING-Q9-001
Q9
MySQL密码 fb5a2ab4f542f486 (AES解密)
FINDING-Q10-001
Q10
邮件记录52条
FINDING-Q11-001
Q11
Redis密码TuoxinRedis2026, key数66
FINDING-Q12-001
Q12
ThinkPHP框架
FINDING-Q13-001
Q13
备份日期2026-07-07 14:30:15
FINDING-Q14-001
Q14
PostgreSQL数据库, 端口5432
FINDING-Q15-001
Q15
数据库密码 Tuoxin@2026_DB
FINDING-Q16-001
Q16
admin密码 Passw0rd (legacy_decrypt+bcrypt)
FINDING-WEB-001
-
网站恢复(Nginx server_name修复)
FINDING-Q17-001
Q17
刷单任务10个
FINDING-Q18-001
Q18
卫永峰购买5份鲨鱼鳍结构化
FINDING-Q19-001
Q19
合约地址 0xAC785C81EB039C101B4175BB5BB66F8CA08B6A3C
FINDING-Q20-001
Q20
加密密钥 TJ_huanghe_2026
FINDING-Q21-001
Q21
群主用户名 dengchao
FINDING-Q22-001
Q22
WAF四项防护全部启用
FINDING-Q23-001
Q23
AI容器 alpine-llama-cpp-server
FINDING-Q24-001
Q24
模型参数量 0.8B
FINDING-Q25-001
Q25
上下文长度 262144
FINDING-Q26-001
Q26
镜像ID 4a01b014fae7
FINDING-Q27-001
Q27
大模型接口 http://172.17.0.1:6699
FINDING-Q28-001
Q28
FileBrowser密码 FCHZTo0mAYzxRxka
FINDING-Q29-001
Q29
南京受害人84人
FINDING-Q30-001
Q30
杨红实发工资总计1180380

CMD 命令索引

编号
时间
内容摘要
CMD-20260804-001
17:34
SSH连接 + 系统信息收集(Q1-Q4)
CMD-20260804-002
17:50
Q4静态解析验证
CMD-20260804-003
18:00
宝塔面板配置信息收集(Q5-Q6)
CMD-20260804-004
18:15
Q7-Q9 宝塔配置和日志分析
CMD-20260804-005
18:57
Q10-Q11 MySQL邮件记录、Redis密码和key数量
CMD-20260804-006
19:05
Q12 Web框架识别
CMD-20260804-007
19:10
Q13-Q15 备份日期、数据库配置
CMD-20260804-008
19:15
Q16 admin密码解密 + Q20加密密钥
CMD-20260804-010
19:52
拓鑫商城网站恢复过程
CMD-20260804-011
20:00
Q17-Q22 数据库查询和WAF配置分析
CMD-20260804-012
20:05
Q23-Q28 Docker容器信息查询
CMD-20260804-017
20:25
Q27-Q30 Docker容器启动、料子分析和工资表统计

- 全链路取证闭环完成 -

- END -

转载声明:本文转载自原发布平台 (作者:取证与溯源), 原文标题《第四届黄河流域公安院校电子物证个人赛服务器取证》, 查看原文。 版权归原作者及原发布平台所有,本站仅作收录与展示,未对正文内容作实质性修改; 若涉及侵权请联系本站处理。