# 0x00 前言
检材密码:EVJbYf&+eStnx5B+C^bj%YPSr)gr
> 中间火眼许可过期了,用了其他工具,痛苦面具
>
## 签到题
<!-- 这是一张图片,ocr 内容为: -->

<!-- 这是一张图片,ocr 内容为: -->

<!-- 这是一张图片,ocr 内容为: -->

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 内容为: -->

火眼,基本信息这可以看到,一加Ace,基本型号,具体还要搜索
<!-- 这是一张图片,ocr 内容为: -->

**<font style="color:rgb(0, 0, 0);">一加Ace5至尊版</font>**
## 3.请分析检材1:手机中已删除的联系人手机号码是什么?【答案格式:12345678910】
<!-- 这是一张图片,ocr 内容为: -->

13696966666
## 4.请分析检材1:手机中找到密码本文件,计算其MD5哈希值,取后6位,字母大写。【答案格式:EF3898】
<!-- 这是一张图片,ocr 内容为: -->

<!-- 这是一张图片,ocr 内容为: -->

<font style="color:rgba(0, 0, 0, 0.87);">AD3563</font>
## 5.请分析检材1:嫌疑人下载的图片隐写工具名称是什么?【答案格式:outguess.zip,英文小写】
<!-- 这是一张图片,ocr 内容为: -->

<!-- 这是一张图片,ocr 内容为: -->

steghide-0.5.1-win32.zip
## 6.请分析检材1:嫌疑人使用隐写工具进行文件隐写密码是什么?【答案格式:ABCD@202002】
<!-- 这是一张图片,ocr 内容为: -->

<!-- 这是一张图片,ocr 内容为: -->

important.jpg,刚刚的密码本里找到爆破
<!-- 这是一张图片,ocr 内容为: -->

`steghide` 本身**没有密码本爆破功能**,已知密码时才用它提取。用密码本爆破应使用 **stegseek**
<!-- 这是一张图片,ocr 内容为: -->

`JHTJ@202605`
## 7.请分析检材1:嫌疑人向数据贩子购买公民个人信息共计多少条?【答案格式:123】
肯定聊天软件找,
<!-- 这是一张图片,ocr 内容为: -->

<!-- 这是一张图片,ocr 内容为: -->

应该是这三个,找一下数据库
<!-- 这是一张图片,ocr 内容为: -->

在连趣这里找到了
100
## 8.请分析检材1:嫌疑人向数据贩子交易时使用的付款方式是什么?【答案格式:支付宝】
继续往后看
<!-- 这是一张图片,ocr 内容为: -->

发现,钱的封面是往 i聊 去了,去看看
<!-- 这是一张图片,ocr 内容为: -->

银行卡【下题都提示了...】
## 9.请分析检材1:数据贩子交易过程中提供的银行卡号是多少?【答案格式:6222351234482925678】
工商银行卡号:6222355973482923738
## 10.请分析检材1:接上题,嫌疑人所使用聊天工具的用户 ID 是多少?【答案格式:12345】
<!-- 这是一张图片,ocr 内容为: -->

之前连趣里不是有让它发码吗
<!-- 这是一张图片,ocr 内容为: -->

扫一下就有,17706223971,但是不对,这是电话
<!-- 这是一张图片,ocr 内容为: -->

<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 内容为: -->

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

看百度网盘打开痕迹
<!-- 这是一张图片,ocr 内容为: -->

四个浏览器
com.tugoubutu.liulanqi
com.meiit.browser
com.heytap.browser
com.apk.pandaBrowser
<!-- 这是一张图片,ocr 内容为: -->

com.meiit.browser
## 12.请分析检材1:嫌疑人于何时下载数据商人发送的数据压缩包文件?【答案格式:2022-02-02 12:00:00】
<!-- 这是一张图片,ocr 内容为: -->

1778576405873
<!-- 这是一张图片,ocr 内容为: -->

北京时间+8,所以就是2026-05-12 17:00:05
## 13.请分析检材1:接上题,该压缩包的解压密码是什么?【答案格式:根据实际值填写】
密码是手机号码,17706223971
## 14.请分析检材1:接上题,年龄在 40 至 60 岁(含 40、60 岁)的富豪共有多少人?【答案格式:123】
压缩包在 检材1\media\0\Download\BaiduNetdisk
<!-- 这是一张图片,ocr 内容为: -->

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

<!-- 这是一张图片,ocr 内容为: -->

<!-- 这是一张图片,ocr 内容为: -->

解压不出开,wps会员修一下xlsx
<!-- 这是一张图片,ocr 内容为: -->

<!-- 这是一张图片,ocr 内容为: -->

[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 内容为: -->

<!-- 这是一张图片,ocr 内容为: -->

那就是这个zip了,改一下名字
<!-- 这是一张图片,ocr 内容为: -->

<!-- 这是一张图片,ocr 内容为: -->

成功,答案**5**
# 0x02 检材2-计算机取证
<!-- 这是一张图片,ocr 内容为: -->

**仿真**
[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 内容为: -->

4. 勾选: Verify images after they are created
<!-- 这是一张图片,ocr 内容为: -->

然后开始导出
```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 模型是哪一个?【答案格式:根据实际值填写】

还是在这里
不知道答案是啥
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 典型的 randomx、cpu、opencl、cuda、pools、donate-level、pause-on-battery、pause-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】
还是上题的函数

核心逻辑:
a1 <= 1时,先getenv("USERPROFILE")。- 然后拼接目标路径:
"%s\\Desktop\\2026xzb_enc"
也就是:
C:\Users\<用户名>\Desktop\2026xzb_enc
- 如果命令行带参数,则改用
argv[1]作为目标目录。 - 后面
CryptAcquireContextW + CryptGenRandom生成 16 字节随机数据,应该是后续加密用的 key/material。 sub_1400014C0(Destination)大概率就是“递归遍历目录并批量加密文件”的函数。- 成功后弹勒索提示框,然后一直
Sleep。
2026xzb_enc
4. 附件 secret_project4.docx.enc 采用勒索家族自定义封装格式。请对该文件进行十六进制分析,该加密文件开头的 5 字节魔数(Magic)是什么?【答案格式:ABCDe 大小写需完全一致】

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

fwrite("RNSM", 1u, 4u, ...)向文件先写 4 字节魔数"RNSM"占用偏移0-3fwrite(&Size, 4u, 1u, ...)再写 4 字节原文件大小 占用偏移4-7fwrite(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-0x13:CryptGenRandom生成的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}