2026FIC决赛
2026FIC决赛
1 | 前言:本次比赛也是拿下全国第八的成绩,希望以后越来越好吧,复盘不易,大家多多支持 |
计算机取证
1.分析计算机检材,嫌疑人telegram绑定的手机号为【参考格式:110】
答案:14453319203
解题思路:分析结果可以看到TG,查看个人信息找到绑定的手机号。

2.分析计算机检材,cherry studio工具配置的默认模型ip地址为【参考格式:1.1.1.1】
答案:192.168.50.156
解题思路;仿真后运行cherry studio 打开设置,可以看到IP地址

3.分析计算机检材,BitLocker的恢复密钥后6位【参考格式:000000】
答案:414590
解题思路:仿真之后可以看到桌面上有backup文件夹,打开后有9张图片,名字就是恢复密钥,

图片隐写,我们将这9张图片导出,放到随波逐流,stegsolve,(Red plane 0),每张图片都能看到一部分二维码,

这样我们将九张分开的二维码用拼图软件合成一个,这里比赛时我用的是pixpin,最后用QR search得到密钥。



密钥:689865-233827-094380-171589-275946-330451-580448-414590
4.分析计算机检材并找到proton邮箱的助记词,第一个单词为【参考格式:bad】
答案:settle
解题思路:在D盘的key文件夹里可以看到proton的加密pdf,

用passware爆破。


5.分析计算机检材,嫌疑人对zhuhu.fic网站发起攻击时,用户名user对应的密码为【参考格式:123】
答案:1qazxsw2
解题思路: 攻击网站需要用到的抓包软件,是桌面的yakit,打开后查看history,然后过滤关键字 password,可以看到user的密码是1qazxsw2。

6.分析计算机检材,嫌疑人对zhuhu.fic网站发起攻击时网站使用的jwt,其签名密钥为【参考格式:123】
答案:
解题思路:在这里可以看到jwt,可以写脚本爆破一下。(密码本为rockyou.txt:1400多万个弱口令密码字典下载 - 完美代码)

1 | import hmac |

7.分析计算机检材,嫌疑人对zhuhu.fic网站发起攻击时,使用的反弹shell中配置的外联服务器域名为【参考格式:baidu.com】
答案:yutubi.top
解题思路:这里挨个找一下就可以看到反弹shell了,可以看到
1 | cos |

8.分析计算机检材,嫌疑人对zhuhu.fic网站发起攻击过程中,下载的住户信息文件密码为【参考格式:123】
答案:kfcvme50xiexie
解题思路:攻击网站需要用到的抓包软件,是桌面的yakit,打开后查看history,然后过滤关键字 password,可以看到右侧对应的文件名是住户信息,所以是我们想要找的密码。

9.搜索计算机检材,找到迷宫游戏中预设的最优路径,分析游戏中隐藏的密码【参考格式:123】
答案:427d672e8b36c12343f8380628025677
解题思路:
- 隐藏密码:`427d672e8b36c12343f8380628025677` - 最优路径步数:`218` - 校验值:`md5(md5(pathStr)) = eeb34e08916da88e2d2ebe3503fceb50` 分析过程 1. 样本是 Electron 程序,关键逻辑位于 `resources/app.asar`。 2. 直接解析 asar 头部可得到文件索引,核心文件有: - `main.js` - `map.html` - `map.txt` 3. `map.html` 中的胜利逻辑如下: js const pathStr = logicPath.join('|'); if (md5(md5(pathStr)) == "eeb34e08916da88e2d2ebe3503fceb50") { pass = `重要密码:${md5(pathStr)}` } 4. `logicPath` 在初始化时先写入起点: js logicPath = [`${startCell.col},${startCell.row}`]; 5. 玩家每进入一个新格子,会追加当前坐标,格式是 `col,row`: js logicPath.push(`${Math.floor(playerX/CELL_SIZE)},${Math.floor(playerY/CELL_SIZE)}`); 6.map.txt 第一行是迷宫尺寸,后续每个数字是墙体位掩码: -1 = 上 -2 = 右 -4 = 下 -8 = 左 7. 因此只需要把 `map.txt` 解析为网格图,从 `(0,0)` 到 `(19,19)` 跑 BFS,即可得到唯一最短路径。 最优路径 - 方向串: text DRDLDDDDDDDDDRDDRUURRDRRUUUURDRUULURRRUULDLLLDLUURURRRUUURRDLDDRURRRDLLDRRRUUURURRDRDLDDLULDDLDRDRRULURRDDDDLULLDDDRURDRDLLDLLLDRDLDDLUUULDDDLDLUURULLLLULLDRDRRDDLULLLLURULLDLLDRDDRRRURDRRRRRRRURDRRRUUURDDDRUUUUURDDDDD pathStr: 0,0|0,1|1,1|1,2|0,2|0,3|0,4|0,5|0,6|0,7|0,8|0,9|0,10|0,11|1,11|1,12|1,13|2,13|2,12|2,11|3,11|4,11|4,12|5,12|6,12|6,11|6,10|6,9|6,8|7,8|7,9|8,9|8,8|8,7|7,7|7,6|8,6|9,6|10,6|10,5|10,4|9,4|9,5|8,5|7,5|6,5|6,6|5,6|5,5|5,4|6,4|6,3|7,3|8,3|9,3|9,2|9,1|9,0|10,0|11,0|11,1|10,1|10,2|10,3|11,3|11,2|12,2|13,2|14,2|14,3|13,3|12,3|12,4|13,4|14,4|15,4|15,3|15,2|15,1|16,1|16,0|17,0|18,0|18,1|19,1|19,2|18,2|18,3|18,4|17,4|17,3|16,3|16,4|16,5|15,5|15,6|16,6|16,7|17,7|18,7|18,6|17,6|17,5|18,5|19,5|19,6|19,7|19,8|19,9|18,9|18,8|17,8|16,8|16,9|16,10|16,11|17,11|17,10|18,10|18,11|19,11|19,12|18,12|17,12|17,13|16,13|15,13|14,13|14,14|15,14|15,15|14,15|14,16|14,17|13,17|13,16|13,15|13,14|12,14|12,15|12,16|12,17|11,17|11,18|10,18|10,17|10,16|11,16|11,15|10,15|9,15|8,15|7,15|7,14|6,14|5,14|5,15|6,15|6,16|7,16|8,16|8,17|8,18|7,18|7,17|6,17|5,17|4,17|3,17|3,16|4,16|4,15|3,15|2,15|2,16|1,16|0,16|0,17|1,17|1,18|1,19|2,19|3,19|4,19|4,18|5,18|5,19|6,19|7,19|8,19|9,19|10,19|11,19|12,19|12,18|13,18|13,19|14,19|15,19|16,19|16,18|16,17|16,16|17,16|17,17|17,18|17,19|18,19|18,18|18,17|18,16|18,15|18,14|19,14|19,15|19,16|19,17|19,18|19,191
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
EXP:
```javascript
const fs = require('fs');
const path = require('path');
const crypto = require('crypto');
function md5(input) {
return crypto.createHash('md5').update(input).digest('hex');
}
function readAsarFile(asarPath, name) {
const blob = fs.readFileSync(asarPath);
const headerLength = blob.readUInt32LE(12);
const headerStart = 16;
const dataStart = headerStart + headerLength;
const header = JSON.parse(blob.slice(headerStart, dataStart).toString());
const file = header.files[name];
if (!file) {
throw new Error(`Missing file in asar: ${name}`);
}
const start = dataStart + Number(file.offset);
const end = start + file.size;
return blob.slice(start, end).toString();
}
function parseMaze(text) {
const lines = text.trim().split(/\r?\n/);
const [rows, cols] = lines[0].split(' ').map(Number);
const maze = lines.slice(1).map((line) => line.trim().split(/\s+/).map(Number));
return { rows, cols, maze };
}
function solveMaze(maze, rows, cols) {
const dirs = [
{ dr: -1, dc: 0, wall: 1, move: 'U' },
{ dr: 0, dc: 1, wall: 2, move: 'R' },
{ dr: 1, dc: 0, wall: 4, move: 'D' },
{ dr: 0, dc: -1, wall: 8, move: 'L' }
];
const queue = [[0, 0]];
const prev = Array.from({ length: rows }, () => Array(cols).fill(null));
prev[0][0] = [-1, -1, 'S'];
for (let i = 0; i < queue.length; i += 1) {
const [r, c] = queue[i];
if (r === rows - 1 && c === cols - 1) {
break;
}
for (const dir of dirs) {
const nr = r + dir.dr;
const nc = c + dir.dc;
if (nr < 0 || nr >= rows || nc < 0 || nc >= cols) {
continue;
}
if (maze[r][c] & dir.wall) {
continue;
}
if (prev[nr][nc]) {
continue;
}
prev[nr][nc] = [r, c, dir.move];
queue.push([nr, nc]);
}
}
const cells = [];
const moves = [];
for (let cur = [rows - 1, cols - 1]; cur; ) {
const [r, c] = cur;
cells.push([r, c]);
const p = prev[r][c];
if (!p || p[0] === -1) {
break;
}
moves.push(p[2]);
cur = [p[0], p[1]];
}
cells.reverse();
moves.reverse();
const pathStr = cells.map(([r, c]) => `${c},${r}`).join('|');
return {
steps: cells.length - 1,
moves: moves.join(''),
pathStr,
password: md5(pathStr),
validation: md5(md5(pathStr))
};
}
function main() {
const asarPath = path.join(__dirname, '..', 'resources', 'app.asar');
const mazeText = readAsarFile(asarPath, 'map.txt');
const { rows, cols, maze } = parseMaze(mazeText);
const result = solveMaze(maze, rows, cols);
console.log(JSON.stringify({
rows,
cols,
steps: result.steps,
moves: result.moves,
pathStr: result.pathStr,
password: result.password,
validation: result.validation
}, null, 2));
}
main();

10.用上述密码解密嫌疑人窃取的外卖数据文件,其中address字段为沈阳市的用户数量为(无需去重或验证数据真实性)
答案:687
解题思路:可以在D:/mm下找到外卖数据文件,用DB-cipher打开,输入上题的密码,过滤address为沈阳市,可以发现有687个。


11.搜索计算机检材,找到树莓派备份文件,分析其中部署的模型文件md5值为【参考格式:123】
答案:DAD354B796D74F65C9BDD354FDA01BD6
解题思路:首先,我们在D盘backup可以找到树莓派备份文件,但是pmfx文件火眼分析不了,

在桌面上可以看到有diskgenius软件,磁盘恢复软件,

我们可以把pmfx备份文件放进去,转换为vmdk格式的文件,用火眼进行分析。


用火眼分析后,在usr/model可以找到模型文件,计算其MD5。

12.分析树莓派备份文件,其中部署的ai agent程序为
答案:hermes agent
解题思路:在root目录下可以看到。

13.分析树莓派备份文件,agent程序中,用于爬取暗网的skill所爬取的网站域名为
答案:http://7ukmkdtyxdkdivtjad57klqnd3kdsmq6tp45rrsxqnu76zzv3jvitlqd.onion/
解题思路:在/root/.hermes/.hermes_history可以看到。

14.分析该agent程序,skill在爬取暗网过程中,最早下载的样本文件名为
答案:sample_5_databases-info.txt
解题思路:在state.db中可以发现对话,在最后的对话中,记录了爬取的内容,

1 | 太棒了!脚本执行成功!优化后的 tor-onion-crawler skill 工作正常。 |
所以答案是sample_5_databases-info.txt
15.暗网服务使用的上游代理ip地址是什么
答案:192.168.50.135
解题思路:在.hermes_history可以找到。

16.分析计算机检材中的cs.exe,请给出这个exe程序的md5值?
答案:E630529110A01B1CE38A9A1BF3BEE9F0
解题思路:在D盘cs文件夹里,计算哈希即可。

17.分析计算机检材中的cs.exe,连接的C2地址是?
答案:192.168.58.172:9999
解题思路:
1 | 在 evil_rsrc10.bin / evil.dll 中可以直接定位到如下关键常量: |
18.分析计算机检材中的cs.exe,可以获取几个浏览器的密码?
答案:2
解题思路:
1 | 在 `evil.dll` / `evil_rsrc10.bin` 中可以看到浏览器密码采集逻辑: |
19.分析计算机检材中的cs.exe,客户端回传了加密数据8xULYcBPgtVDeUYCpKtisYPuPZaetRX3QrOF94R8x7PrbpZ0RgQleZqYFqDUnXyB3rSICCkauTo/UDC7eOV1SwCv8H+JEuE4+mw0H7vJqv+ZzOESLJ/2I6LiqqLSBDCsCBc8bcjpEskkCX8RNUAQQQ== 解密数据,hostname的值为?【参考格式:ABCD-EFGH】
答案:DESKTOP-9FG1UPK
解题思路:
从 `evil.dll` / `evil_rsrc10.bin` 常量区可以恢复出 AES 相关逻辑: - 使用 `base64` - 使用 `AES.MODE_CBC` - 使用 `PKCS7` 补位 在常量区 `C2_HOST / C2_PORT / 注册表路径` 后面,存在一个稳定的 16 字节二进制常量: text 8c 88 f3 4a bc 09 48 fb cb 36 6a 74 7f 4c d6 0e 即 AES Key 为: text 8c88f34abc0948fbcb366a747f4cd60e ### 9.2 解密结果 将题目密文做 `base64` 解码后: - 前 16 字节为 IV - 剩余部分为 AES-CBC 密文 成功解得明文 JSON: json {"type": "checkin", "hostname": "DESKTOP-9FG1UPK", "user": "MBRE", "pid": 45140} 因此本题 `hostname` 的值为: - `DESKTOP-9FG1UPK`在 `evil_rsrc10.bin`(在`Unknown action:` 附近可见动作字符串) 的动作分发表附近,可以看到服务端下发动作及对应处理逻辑。可明确恢复出的 action 有:1
2
3
4
5
6
7
### 20.分析计算机检材中的cs.exe,可以从服务端接收的action指令有多少种?
答案:9
解题思路:
pingautostart_addautostart_removeclipboard_startclipboard_stopclipboard_dumpscreenshotbrowser_passwordsexit
1 |
|
7.分析手机检材,北京时间2026-05-06 10:43:38左右哪些应用的通知被查看了?
A.com.v2ray.ang
B.com.quark.browser
C.com.ai.assistance.operit
D.com.stevesoltys.seedvault
答案:AC
解题思路:
1 | 借鉴玫幽倩师傅的wp |
这题需要找到统计数据,检材2.手机.tar/data/system_ce/0/usagestats。(Android dumpsys usagestats --proto 导出的二进制统计数据)
daily可以看到一些时间戳文件


这里我们需要结合所有纯数字的 protobuf 日志文件,读取 mappings,构建「数字 ID → 应用包名、页面类名」对照表;
EXP:
1 | #!/usr/bin/env python3 |

导出为csv文件后,过滤时间戳为题目给出的,过滤状态为被查看(SEEN)的,可以看到AC选项的包名。


8.该手机曾进行过一次备份,使用的工具是【参考格式:ABC123】
答案:seedvault
解题思路:在data文件夹里能看到一个backup也就是备份文件夹,

打开之后能找到一个备份工具的包。

9.使用上述工具进行备份的具体日期是【参考格式:2000/1/1】
答案:2026/05/09 14:24:27
解题思路:搜索上题的包名可以找到该文件,lastbackup对应时间戳转换一下即可。


10.手机重启过程中,屏幕上除厂商logo外,还可以看到以下哪些内容
A.二维码
B.密码相关提示
C.FIC
D.助记词
答案:
解题思路:直接找一下bootanimation.zip。


下载解压后,可以看到很多图片。

所以答案是AB。
11.分析上述除logo外的信息,发现与加密后的助记词有关,这里用来加密助记词使用的对称加密算法为【参考格式:md5】
答案:sm4
解题思路:

根据刚刚的密码图片,对应密码是1234567812345678(SM4)


12.助记词有部分残缺,需要补全的助记词数量为【参考格式:1】
答案:9
解题思路:只有sign will bag是全的,其他是不全的。
也可以根据助记词表,写个脚本爆一下。(bips/bip-0039/english.txt at master · bitcoin/bips · GitHub)
13.嫌疑人近期使用了一款笔记软件,该应用数据加密使用的主要加密算法为【参考格式:AbCd-afwfw】
答案:XChaCha20-Poly1305
解题思路:到文件系统中搜索该软件包名,找到对应数据库,可以找到,

1 | {"content_type":"Note","content":"004:b863f59a4aa43af996eac1293d983a39e104ca83781300b3:NleNZvh1dmlhnnkGu3nnTM4G4LN5nVTSqa8s7RJ/LImFvNUjeOL7nGr3m41ECs5pic+ZhKuhTCggvuQltq9+b9+Y0+aXO79o4to4xda38aYjd5OHu/4PEdpmEqLNS5atTufwORccVjxabns8WRkCHqWeFMBskxniK3xh/rFdyW4e2Md8B7bd/oMuluS3uBR4I+JlkVE2Q0zNqto2sOMHEnnxB1xhtYrvgRi39UMt/oRwIBaTBv/l/qU99P92ESfVdcxfi5AhROTv3aITNh6NOiO+fZ2Z9yhfe5MApBcVATI9sApoBVFd3gXAATqKc043/+WQMVl+fD6D20CXnqERuDX4XP4VEAat2WPLiuiIv73mai9/wxGht2n0kkcK6kljh+6Hx4AH1rEBw6a1WfWr/g==:eyJ1IjoiMjk2M2U4YjQtMDBiMy00ZDQyLTg0N2UtNzFiMmNhNzllMTgyIiwidiI6IjAwNCJ9:e30=","created_at_timestamp":0,"created_at":"2026-05-08T05:19:57.564Z","deleted":false,"dirty":false,"enc_item_key":"004:7c1ef6f717d20faf8cdca32cef2dd39736704940918302f6:0Pul8qMWK7Gu+12Y/+0qI6QhiLIm4lFrpd7ebnEslEVukAfQ3k/QZqeyHCx3wR2iG+r6urZ4KsS/7W5utnRWfW+HNThEQjtgmLlqIF56mXs=:eyJ1IjoiMjk2M2U4YjQtMDBiMy00ZDQyLTg0N2UtNzFiMmNhNzllMTgyIiwidiI6IjAwNCJ9:e30=","errorDecrypting":false,"items_key_id":"6ff1c1bc-3c6d-4003-84e5-e94f4a1f0214","updated_at_timestamp":0,"updated_at":"1970-01-01T00:00:00.000Z","uuid":"2963e8b4-00b3-4d42-847e-71b2ca79e182","waitingForKey":false} |
1 | XChaCha20:流加密,负责数据机密性(把明文变成乱码) |
可以知道是XChaCha20-Poly1305。
14.分析该笔记软件,其数据库一次解密密钥为【参考格式:abcd】
答案:69bf3693d45cd5485cc53cd7ad9c5c5bf769aa48847253c3991ef18bd3f2ae87
解题思路:还是在刚刚的数据库中 保存了KEY。

1 | {"content_type":"SN|ItemsKey","content":{"itemsKey":"69bf3693d45cd5485cc53cd7ad9c5c5bf769aa48847253c3991ef18bd3f2ae87","version":"004","references":[],"appData":{"org.standardnotes.sn":{"client_updated_at":"2026-05-06T02:43:50.023Z"}},"isDefault":true},"created_at_timestamp":0,"created_at":"2026-05-06T02:43:50.022Z","deleted":false,"updated_at_timestamp":0,"updated_at":"1970-01-01T00:00:00.000Z","uuid":"6ff1c1bc-3c6d-4003-84e5-e94f4a1f0214","dirty":false} |
15.用来解密5月8日的收入的二次解密密钥为【参考格式:abcd】
答案:c1790efd9f93361ed78291524d46983d32f866308c4eda7d2228bcd35405e999
解题思路:5月8日对应的就是最后一条,因为仿真后可以看到信息,id是一样的,

根据密钥 和 密文 解密。
1 | import base64 |

16.笔记软件中记录5月7日的收入为【参考格式:123.45】
答案:84826.90
解题思路:雷电分析该APK,导入应用数据,雷电模拟器打开,直接查看。

17.笔记软件中记录5月6日的收入为【参考格式:123.45】
答案:76583.87
解题思路:这题软件里找不到,但是根据前面的,可以想到备份文件,SeedVaultAndroidBackup
这里我们用seedvault,(Release v0.1.1 · Baltram/seednaut · GitHub),恢复一下。中间需要用到助记词,depth acid cluster record journey horse rookie sign sand cancel will bag。

恢复后找到数据库db,

打开数据库 同样的方法解密,

1 | import base64 |
答案76583.87

18.手机检材中有一个AI助手程序,分析该程序配置与任务,哪个应用程序运行后会清空本地存储内容?回答包名【参考格式:a.b.c】
答案:
解题思路:在APK中搜素AI可以找到operit这个软件,

然后去搜索后,可以找到json文件,

其中记录了运行后会清空本地存储内容的应用,即com.tencent.mm。(delete_file)

19.分析AI助手程序调用的模型,结合笔记软件中的记录,用来隐藏银行卡密码的模型文件名为【参考格式:icp123】
答案:ultraman-663M-BF16.gguf
解题思路:仿真导入数据后可以看到。

20.嫌疑人曾自行修改上题中的模型,他是通过什么原始模型修改而来的?【参考格式:glm】
答案:Hunyuan-7B-Instruct-MNN
解题思路:搜素上题文件,

010打开,看到是hunyuan。

所以是Hunyuan-7B-Instruct-MNN

21.被修改后的模型量化精度为【参考格式:abc】
答案:BF16
解题思路:模型里写了BF16

22.能够提升修改后模型对话能力的虚拟token为【参考格式:】
答案:<|hy_place▁holder▁no▁8|>
解题思路:找到软件的log日志,

可以看到聊天后都有<|hy_place▁holder▁no▁8|>

23.分析AI助手与笔记软件中的记录,找出银行卡6位数字密码为【参考格式:123456】
答案:525252
解题思路:把上题的gguf模型文件导入到LM Studio,

然后问他密码,可以看到很多525252,就是密码了。

Linux服务器取证
1 | web1仿真直接看ip 连ssh即可, |

1.分析服务器检材,找出来自阿里云的服务器镜像,其源盘SHA256值为【参考格式:ABC】
答案:119FCF5D8F8F69336656B8E93A4C00838BC5A6C1FD82878F9C8EDFA1FE437F0D
解题思路:web1连上之后就可以看到是阿里云的,

直接计算哈希。

2.分析服务器检材,“星球商城”网站使用的 React 服务端渲染应用框架为?【参考格式:thinkPHP】
答案:Next.js
解题思路:启一下docker

可以看到next.js

3.分析服务器检材,“星球商城”网站管理员密码所用的盐为?【参考格式:ABC】
答案:Honglian2026FIC
解题思路:启动容器并进入,
1 | docker ps -a |
查看package.json,
可以发现一个seed.ts 在prisma下,去cat一下,找到盐值。

4.分析服务器检材,“星球商城”网站备份的数据库加密后文件名为?【参考格式:abc.abc.abc】
答案:fkdb_20260507.sql.gpg
解题思路:在web2的data/backup下。

5.分析服务器检材,“星球商城”网站使用了NOWPayments作为支付接口,其api_key为?【参考格式:8K2M9PL-QT7X4NR-3A5F6D8-GVY1CW2】
答案:934P23T-FZVMBDE-Q1R06NJ-4E6HZTM
解题思路:在root下的env文件可以找到。

6.“星球商城”网站已成功交易的订单总金额是多少?【参考格式:10】
答案:130
解题思路:web2.E01/分区5/root/.openclaw/agents/main/sessions可以找到该文件,搜索密码看到密码,Honglian@Fic2026Password
同时也能看到解密命令,


这里搜索一下解密文件名字,导出来后放到虚拟机里解密,

解密时输入刚刚的密码,得到sql文件。

然后用密码和ip连到navicat


找有卡号的,合计130

7.卡号为797037X33CIHX7S6的充值卡,其面值是多少积分?【参考格式:1】
答案:100
解题思路:在card找到对应卡号,在productld中是2,

再去productld找2,得到是100

8.“星球商城”网站订单号为8FKXMF1OXOL3ZZ0H的购买者,其Telegram昵称是什么?【参考格式:tom】
答案:Kane Davis
解题思路:在/root/faka/.env找到加密数据库,
1 | PASSWORD_MANAGER_MASTER_PASSWORD='Honglian@Fic2026Password' password-manager list |

列出密码,(参考Serendipity的小屋),

列出第一个的密码,解密数据库,

查看order数据。

9.根据“星球商城”网站仪表盘的显示,其技术支持栏中提供的 Telegram 用户名是什么?【参考格式:zhangsan】
答案:zhituma
解题思路:web1.E01/分区2/var/lib/docker/overlay2/jr0hxl8wnzf9weogwginrefta/diff/app/src/app/admin/ page.tsx
最后可以看到HTML实体编码,解码得到,
技术支持:https://t.me/zhituma,
所以是zhituma。

10.openclaw 当前配置使用的模型名称是什么?【参考格式:xx/xx】
答案:deepseek/deepseek-v4-flash
解题思路:在web的root目录下./openclaw可以看到配置。

11.openclaw 为上述模型设置的 API Key 是什么?【参考格式:sk-xxx】
答案:sk-b203197a32804a669495973886ca8760
解题思路:在上题文件也能找到。

12.openclaw 定时广告推送任务中的链接是?【参考格式:https://www.baidu.com】
答案:https://t.me/+kzTXt-NO34QwNWJh
解题思路:在web2.E01/分区5/root/.openclaw/cron/jobs.json可以看到。

13.openclaw 目前已安装的技能数量是多少?【参考格式:1】
答案:61
解题思路:
1 | 开启opneclaw openclaw gateway --port 18789 |

访问(OpenClaw Control)技能共61个

14.嫌疑人将其所使用的 openclaw 命名为?【参考格式:小名】
答案:小星
解题思路:直接可以看到

15.“星球商城”网站所在服务器(IP:8.217.145.152)的 root 密码是多少?【参考格式:abc】
答案:e&eqYEbu5bM~8iA
解题思路:
1 | PASSWORD_MANAGER_MASTER_PASSWORD='Honglian@Fic2026Password' password-manager get --name "8.217.145.152-root" --show-password |

16.嫌疑人给 openclaw 安装的本地密码管理技能的名称是?【参考格式:xxx-xxx】
答案:password-manager
解题思路:在技能列可以找到。

17.嫌疑人设置的本地密码管理器主密码是?【参考格式:xxxx】
答案:Honglian@Fic2026Password
解题思路:和上面的题在一个聊天记录里(web2.E01/分区5/root/.openclaw/agents/main/sessions/a5fc40f5-285e-4576-a29a-1d0d0429ca3c.jsonl)

18.嫌疑人进行广告推广的‘白果视频’网站的网址是什么?【参考格式:https://www.baidu.com】
解题思路:搜索白果可以找到。

19.Docker 容器 tg_faka 所连接的数据库的密码是多少?【参考格式:xxx】
答案:Honglian@2026fic
解题思路:在之前数据库里
20.嫌疑人使用 openclaw 在其另一台服务器上安装了 Docker,请问该服务器的 IP 地址是什么?【参考格式:127.0.0.1】
答案:1.14.198.31
解题思路:聊天记录里。

21.tg_faka 机器人所配置的 Telegram Bot Token 是什么?【参考格式:1234567890:ABCdefGHIjklmNOPqrstUVwxyz1234567890】
答案:8514062821:AAHzdIL52vtuR9Y3ItBqtfAZdMwZ-YjPzms
解题思路:在web2.E01/分区5/root/captcha-bot/config/config.toml可以找到

22.tg_faka 机器人所处理的订单中,状态为“已完成”的订单总共有多少条?【参考格式:1】
答案:2
解题思路:之前的db数据库,可以看到已完成的英文。

23.Telegram 昵称为 milo 的用户的支付宝账号是多少?【参考格式:xxx】
答案:fic@zfb
解题思路:在 web2.E01/分区5/root/faka/.env/db.db数据库可以看到。

24.嫌疑人创建的用于售卖卡密(卡号与密码)的 Telegram 群组名称是什么?【参考格式:弘连网络】
答案:星球商店交流
解题思路:在web2.E01/分区5/root/captcha-bot/db/geecaptcha.db可以看到。

25.在群管机器人的统计数据中,通过验证并成功加入群聊的总人数是多少【参考格式:1】
答案:3045
解题思路:导出数据库,筛选。
26.嫌疑人在群管机器人中配置的广告共有多少条?【参考格式:1】
答案:3
解题思路:数据库查看表。

27.昵称为 milo 的Telegram用户是在什么时间通过群管机器人认证?【参考格式:2026-00-00 00:00:00】
答案:2026-05-06 17:30:56
解题思路:查看表对应昵称的入群成功时间。


Windows服务器取证
1.分析服务器检材,系统分区的文件系统类型是?【参考格式:FAT32】
答案:refs
解题思路:查看火眼给出的文件系统

或者
1 | fsutil fsinfo volumeInfo C: |

2.分析服务器检材,系统分区的文件系统版本是多少?【格式:1.23】
答案:3.14
解题思路:
1 | fsutil fsinfo refsInfo C: |

3.分析服务器检材,系统的SKU编号(OperatingSystemSKU)是什么?【参考格式:101】
答案:
解题思路:这里比赛的时候用联网机搜了一些命令。
1 | (Get-CimInstance Win32_OperatingSystem).OperatingSystemSKU |

4.服务器中的WinRM HTTP服务的端口是多少?【格式:65535】
答案:59508
解题思路:
1 | winrm enumerate winrm/config/listener |

5.最后一次通过WinRM远程访问的北京时间是【格式:1970-01-01 00:11:22】
答案:2026-05-17 16:38:06
解题思路:分析WinRM日志。
1 | Get-WinEvent -LogName 'Microsoft-Windows-WinRM/Operational' |

1 | EventID:91 | Information | Creating WSMan shell on server with ResourceUri: http://schemas.microsoft.com/wbem/wsman/1/windows/shell/cmd |
6.服务器除了允许上一题登录记录的IP地址远程登录,还允许哪个IP地址远程管理【格式:1.2.3.4】
答案:117.184.20.123
解题思路:在上题日期为5.12的日志可以看到ip是218.80.0.18。下面命令可以将数据多的日志换行,避免看不到IP。
1 | Get-WinEvent -LogName 'Microsoft-Windows-WinRM/Operational' -FilterXPath ` "*[System/TimeCreated[@SystemTime >= '2026-05-12T00:00:00Z' and @SystemTime <= '2026-05-12T23:59:59Z'] and System/EventID=91]" | Format-List -Property TimeCreated, Id, Message |

查询本机防火墙中所有开放 59508 端口的规则,输出每条规则对应的:本机监听 IP、允许连接的远程 IP 范围。
1 | Get-NetFirewallPortFilter | |
根据题意,除去上一题的IP,剩下117.184.20.123。

7.主机secrets目录中存放有一批密码文档,找到存在历史快照版本的文件,该文件历史版本中存放的密码是什么【格式:Abc123!@#】
答案:pMLCzXOd+<.&.pUw
解题思路:
1 | 递归扫描当前目录所有文件,找出文件中以 :$SNAPSHOT 结尾的 NTFS 备用数据流(ADS),输出文件完整路径、数据流名称、数据流占用大小。 |

发现存在文件,并且是题目所说的密码文档,我们可以想办法导出,
有几个前提,已经RDP连上了服务器,并且服务器防火墙已经关闭,
1 | Set-NetFirewallProfile -Profile Domain,Public,Private -Enabled False |

之后我们开始导出,下面的命令在本机(不是服务器)的powershell(蓝色管理员)界面执行,
1 | Enable-NetFirewallRule -Name FPS-SMB-In-TCP |
最后导出的文件会在当前目录下,一般在system下,也可以搜一下。在system下想打开记得换一个目录,权限问题可能打不开。


8.嫌疑人称,服务器中曾安装有Linux虚拟机用于下载合同文件,其中存有一份加密的合同文件,找到这个文件,计算文件的MD5值。【格式:d41d8cd98f00b204e9800998ecf8427e】
答案:921a242639d1a13f6d6bfa47d9eb34d5
解题思路:分区6/Users/Administrator/VM可以看到虚拟机文件,合并avhdx(子盘)分析,

1 | cd C:"/Users/Administrator/VM" |

一个一个还原,看有没有合同。
1 | Copy-Item C:\Users\Administrator\VM C:\Users\Administrator\VM_C03E3EEC -Recursecd C:\Users\Administrator\VM_C03E3EECMerge-VHD -Path .\fedora-coreos-44.20260419.3.1-hyperv.x86_64_C03E3EEC-C39B-4BDA-8F2E-8A69C216E73F.avhdx ` -DestinationPath .\fedora-coreos-44.20260419.3.1-hyperv.x86_64.vhdxCopy-Item .\fedora-coreos-44.20260419.3.1-hyperv.x86_64.vhdx C:\Users\Administrator\C03E3EEC_state.vhdx |
1 | 导出到本地 |
计算md5。

9.管理后台页面的TLS证书的SHA1指纹是什么【格式:da39a3ee5e6b4b0d3255bfef95601890afd80709】
答案:248424a5234d539cbf0425751a437adcc106d835
解题思路:启动网站服务,
1 | $chrome = 'C:\Program Files\Google\Chrome\Application\chrome.exe' |
查看网站证书,

编写脚本,计算哈希,
1 | import ssl |

10.广告页面提供服务的网卡MAC地址是什么【格式:11:22:33:aa:bb:cc】
答案:00-15-5D-19-96-2C
解题思路:可以看到publiclistenip监听 172.27.0.1
所以网卡是00-15-5D-19-96-2C


11.管理员在北京时间2026-05-01 12:23:21通过聊天工具向他人发送过一个验证码,计算管理员在这个时间登录管理后台需要使用的验证码是否与聊天记录中的验证码相同,这个时间的验证码是【格式:12345678】
答案:65625
解题思路:用后面的题的数据库连接,密码yiZvGzBS9FYxrw42J17LNUK5tlDo

secert是JBSWY3DPEHPK3PXP

写脚本。

1 | import pyotp |
12.从现场扣押的证书文件中寻找网站管理员登录后台使用的证书,正确的证书文件的SHA1哈希是什么【格式:da39a3ee5e6b4b0d3255bfef95601890afd80709】
答案:C48B687F0FFCA44B626F1794BB6CB81CA8C8DF9F
解题思路:指纹为,

在附件3找一下,

1 | from pathlib import Path |
13.使用证书文件登录推广管理网站后台,管理员登录后网站右上角的flag是什么。【格式:flag{abc_123_!@#}】
答案:flag{fic_mtls_2a10229ccc830e737cb54993}
解题思路:官方题解。
还原服务器网络环境,启动网站,用上面计算的 HOTP 和证书登 录即可获取。如果将网站直接拷贝出来运行注意需要还原注册表、凭据、 密钥存储等各处系统存储的信息。管理后台顶部导航会在满足条件时显示 登录成功提示:

因此只看源码能知道显示条件和算法,只看 PostgreSQL 能找到管理 员 TOTP secret 和证书 thumbprint,但两者都不包含 flag 明文。AI 可以解析出算法,直接算出 flag。人工逆向做会比较费时。从题目给的 DNS 配置和代码可以知道网站是纯HTTP3 的,需要修改 chrome 启动参数才能访问。另外注意因为有 TOTP,登录时服务器和本机时间要一致

14.现在需要从现场扣押的硬件密钥中寻找网站管理员登录后台使用的硬件密钥,网站管理员登录后台使用的硬件密钥中存储的凭据ID是什么。【格式:8914d73ee5522094906733031a76bb04e915e9e577ad92e0abe78428bd9dad9c8ac78412819373191547b199fbc0914d】
答案:
解题思路:在admin webauthn credentials数据库可以找到

转换下编码。

15.运行网站数据库的容器中,容器内部操作系统版本是【格式:25H2】
答案:
解题思路:查看容器,

进入容器,
1 | nerdctl run --rm -it --entrypoint pwsh docker.io/innovesys/postgresql-windows:18-nanoserver-ltsc2025 |
10.0.26100对应24H2

16.推广管理网站使用的PostgreSQL数据库版本是多少。【格式:16.1】
答案:18.0
解题思路:

17.推广管理网站连接PostgreSQL数据库使用的密码是什么。【格式:Abc123$%^】
答案:yiZvGzBS9FYxrw42J17LNUK5tlDo
解题思路:
这里需要用mimikatz,
1 | cmdkey /add:172.27.0.100 /user:Administrator /pass:F1cWinC@re |
先把防火墙关闭,
1 | Set-MpPreference -DisableRealtimeMonitoring $true |
1 | token::elevatevault::cred |
得到密码
1 | TargetName : FICWEB/PostgreSQL/FicWeb / <NULL> |
18.根据推广网站的推荐算法,在北京时间2026年5月1日 12:34:56时,上海的IP地址通过huajian026.chat-now.vip访问https://ficads.site/p/026的广告页面时,最有可能推荐的应用包名是什么。【aaa.bbb.ccc】
答案:com.fic.seed.chatlive095
解题思路:
1 | select * from fic.resolve_promotion_payload_at('huajian026.chat-now.vip','/p/026','上海',timestamptz '2026-05-01 12:34:56+08'); |

19.fic.traffic_counters记录了推广源、APK 和日期维度的访问计数。请找出全量visit流量中,累计访问量最高的host + package_name组合对应 APK 的apk_sha256字段值为:【格式:27AE41E4649B934CA495991B7852B855】
答案:65EA7D9DDB135EF977CA28F7E046D705
解题思路:
traffic_counters表本身并没有host和apk_sha256字段,这里要聚合,
apk_targets中有apk_sha256,

promotion_sources中有host字段,

1 | WITH ranked AS ( |

20.数据库中删除过一条创建时间为北京时间2026-05-13 10:30:00的admin用户的passkey信息,请恢复这条记录,credential_id字段的内容是什么?【格式:ASNFZ4mrze_-3LqYdlQyEA】
答案:PV0o_BzQptB90kmn8I_9VZxw_LKnIJ8IyqSAWOvAtlc
解题思路:上官方wp,
本题考查 PG 数据恢复。通过 pg_waldump 解析 WAL 日志,定位 DELETE 记录,还原数据。
先用 pg_waldump 查看 WAL 中的 DELETE 记录:

关键业务记录如下:

将 WAL 中的 relation ID 映射回表名:

结果:

导出该 relation 的 full-page image:

第一条被删 admin passkey 位于这个 full-page image:

在分析副本中启用 pageinspect,按表结构拆解 lp=1 的 tuple:

再把恢复出的 admin_user_id 关联回 fic.admin_users,得到结果为 admin。





