2026黄河流域电子物证

检材密码:2026huanghe@shanxijingyuan&tuojie666

做完发现这套题真的很适合新生入门,不是很难

手机取证

01 受害人曾搜索过"兼职APP推荐",使用的搜索软件是什么?(答案格式:Google)

Deepseek

在deepseek中看到

为什么deepseek是搜索软件

02 受害人是哪一天注册的"拓薪任务"APP?(答案格式:2026-02-02)

2026-03-01

在邮件中看到好多拓鑫任务,题目的字可能打错了,由注册邮件发送日期可知答案

03 根据日历中记录的内容,受害人分别在刷单APP上投入了以下哪些金额

A. 100元

B. 500元

C. 3000元

D. 5万

E. 10万

ABCD

就是翻看与你app的聊天记录了

天上不会掉馅饼,谨防诈骗

04 截止2026-03-12,受害人共投入了多少资金?

15万

05 以下哪些账号或昵称是该受害人的?(多选题)

A. 张大帅

B. 哈哈小飞侠

C. 海阔天空

D. zdashuai0709@163.com

E. Zhangmouren

ABD

一个个软件看就可以了

06 受害人意识到被骗后,收集了一些证据并且打包成了压缩文件进行备份,压缩包中的文件名称为?

**诈骗账户信息.txt **

他问压缩文件,其实就可以直接查看压缩文件有啥了

看看zip里有什么,三个都是这个

07 受害人搜索过以下哪些地方?(多选题)

A. 新街口

B. 夫子庙

C. 紫金山

D. 南京禄口机场

E. 南京红山动物园

ABD

直接去地图软件的搜素记录上一个个看

08 受害人2026年7月3日中午最可能在哪个城市?

海口市

在相册这里看到了一张机票,7月3日起飞的,那就是海口市了

09 分析受害人手机中安装的家庭智能硬件管理平台数据库,其中有一个智能空调遥控器的型号是什么?

qjiang.acpartner.ac02

只能管理平台可以看到分析出来一个米家,查看一下数据库,看到了空调相关的

10 张某曾在"与你"app中下载过一个文件,其中隐藏了一个支付地址,请找到并回答地址是什么?

https://pay-demo.virtualpay.com/pay/orderNo=ORD260710594721

题目说了与你app,那就直接去与你app的文件夹中找了

看到一个重要.jpg,导出一下,010打开,直接可以看到

计算机取证

01 该计算机的系统盘原始磁盘MD5值是多少?

A. 12a5b44edfa80c904b5e16affa383d88e4aa0caa

B. 1442499db55b8c6f901dafe65a6fd70a

C. 27f9c083205673ef3906fb188e39b3fe

D. ac363ab3a41bb321da79ba8220e41b8e

B

一眼就知道谁是系统盘了,直接计算哈希

02 该计算机的安装时间(UTC +8)是什么时候?

A. 2026-02-14 06:24:25

B. 2026-02-14 14:24:25

C. 2026-06-29 06:24:25

D. 2026-06-29 14:24:25

B

查看一下系统基本信息

03 用户"Rhine"最近一次登录成功的时间是什么?

A. 2026-02-24 14:44:18

B. 2026-02-14 15:11:35

C. 2026-06-29 16:16:29

D. 2026-07-07 16:16:29

C

查看一下用户登录日志

04 用户"Rhine"的密码NTLM哈希是多少?

44f9ea6a7743a8ea6f1956384c39887b

查看用户的账号信息

05 接上题,请破解用户"Rhine"的密码NTLM哈希(提示:9位密码,前三位为123,后六位为小写英文),明文密码是多少?

123qweasd

可以直接看到密码

也可以爆破一下

得到答案

06 该计算机的DHCP IP地址是多少?

192.168.0.107(194.7.30.136)

这里有个问题想请教一下各位佬,仿真之后有人是0 2,有人是0,所以导致答案就不一样,这是因为什么造成的呢?

看到两个网卡

仿真看看

07 该计算机中微信客户端的安装时间是什么?

A. 2026-02-14 21:28:08

B. 2026-03-14 21:28:08

C. 2026-04-14 21:28:08

D. 2026-05-14 21:28:08

A

08 该计算机中登录的微信账号是什么?

wxid_2869cyfdzpon12

直接可以看到

09 该计算机中安装使用的安卓模拟器手机型号是什么?

SM-G9810

仿真之后桌面上就有夜神模拟器,然后看分析结果即可

这里不能启动虚拟机看虚拟机设置,以静态解析为准,仿真起来的一律不算

10 该计算机中保存的嫌疑人张三伪造的身份证号是多少?

11010.....01

仿真之后在图片中可以看到

11 嫌疑人真正的身份证号是多少

321........6134

在文档中看到一个日记本,下面还有个我的密语

打开发现什么都没有

正好刚刚翻到一个零宽网站

解密一下

12 嫌疑人在2026年2月15日要去4s店提什么车?

五菱

接下来就该打开日记本了,输一次错误密码可以回答问题找回密码

输完之后告诉了密码

打开日记本

13 计算机中存在一个cdk生成器,支持生成以下哪几个平台的cdk?

A. STEAM

B. EPIC

C. ORIGIN

D. UPLAY

E. CUSTOM

ABCDE

在音乐文件夹看到

14 计算机中存在一个加密容器,该容器文件的SM3哈希值是多少?

d6fcd05a60ce61e7fd3202a24006beb781b1b30ec4b2826225d6d19d508fd3b0

翻文档的时候看到一个30MB的txt文件,感觉不太对劲

打开之后是乱码,基本上就是这个了

计算哈希

15 接上题,该加密容器的密码是什么?

easy_pyc

便签中说,容器密码在cdk生成器中找到

但是这个生成器是个exe啊,看exe图片猜到是python解包了

用pyinstxtractor-ng直接解包看看

再用pylingual,把 Python 字节码(.pyc)反编译回 .py源码,先看cdk的这个pyc文件

看到了密码,尝试挂载一下,成功挂载

16 接上题,其中包含以下哪几个"免费开户、查人"的TG频道?

A. 巨人社工库

B. 好旺社工库

C. Xray社工库

D. 情报局社工库

ABCD

打开txt可以看到

17 加密容器中存在一个PowerShell脚本,脚本中定义的 XOR 解密密钥是?

81

看到压缩包里有个ps1文件

用记事本打开一下,看到0x51,转成10进制

18 以下哪个文件会被脚本从 Steam 目录中删除?

A. hid.dll

B. steam.cfg

C. zlib1.dll

D. appdata.vdf

B

一个个搜索一下,看看是干啥的

可以看到ACD都是恶意注入的劫持模块,只有B是删除操作

19 BitLocker加密分区的48位恢复密钥是什么?

174526-427251-448943-433774-027698-350119-649715-502139

又到了找bitlocker密钥的环节了,电脑还有四张照片没有用,都给放到随波逐流看一下

修改长宽高看到密码AlpsRhine,用密码打开kdbx文件得到bitlocker密码

打开bitlocker管理器,使用密码解密磁盘

点击备份恢复密钥,保存到文件,查看文件即可

20 BitLocker加密分区中存在一个sql文件,请解密BitLocker加密分区,分析sql文件中的数据库名为?

steamcdk

看到有个压缩包,导出看一下是加密的

我以为是跟图片有关联的,拼好图片发现有个flag,但是输入密码不对,整了半天看了下wp发现是伪加密。。。。扔进随波逐流里

查看一下sql文件

程序逆向分析

这里其实看到后面的题目就知道第一道题的附件是什么了

01 该刷单APP的包名是什么?

com.tuoxin.task

分析出来直接看到

02 该刷单APP从设备通讯录中窃取数据后,将数据写入哪个本地 JSON 文件?

contacts_bak.json

题目说是个json文件,那我们搜索一下json看看有什么

看到一个filewriter,看看具体代码

python 复制代码
public final void a() {
    try {
        ArrayList arrayList = new ArrayList();
        // 1. 读取通讯录
        Cursor cursorQuery = getContentResolver().query(
            ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null, null, null);
        if (cursorQuery != null) {
            while (cursorQuery.moveToNext()) {
                arrayList.add(
                    cursorQuery.getString(cursorQuery.getColumnIndex("display_name"))
                    + "|" + cursorQuery.getString(cursorQuery.getColumnIndex("data1"))
                );
            }
            cursorQuery.close();
        }
        // 2. 拼接为 "姓名|号码\n"
        StringBuilder sb = new StringBuilder();
        Iterator it = arrayList.iterator();
        while (it.hasNext()) {
            sb.append((String) it.next());
            sb.append("\n");
        }
        // 3. XOR 异或加密(密钥见 0x03)
        byte[] bArrXorFallback = ag0.xorFallback(sb.toString().getBytes());
        // 4. Base64 编码后写入本地文件
        FileWriter fileWriter = new FileWriter(new File(getFilesDir(), "contacts_bak.json"));
        fileWriter.write(Base64.encodeToString(bArrXorFallback, 0));
        fileWriter.close();
    } catch (Throwable th) { ... }
}

确定了,就是这个

03 分析该刷单APP的 assets/cfg.bin文件,以下说法正确的是?

A. cfg.bin 经过Base32编码

B. cfg.bin 经过 Base64 编码

C. cfg.bin 使用 AES-256-CBC 加密

D. cfg.bin 使用 AES-512-CBC 加密

E. cfg.bin 的 IV 来源于该文件自身偏移 8-23 字节

F. cfg.bin 的 IV 来源于独立的 assets/iv.bin

BCF

搜索一下cfg.bin,追踪代码

python 复制代码
public static synchronized String decryptConfig(Context context) {
    // 1. 读取 assets/cfg.bin 原始字节
    InputStream is = context.getAssets().open("cfg.bin");
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    byte[] buf = new byte[4096];
    while ((n = is.read(buf)) > 0) baos.write(buf, 0, n);

    // 2. 把整个文件当作 UTF-8 字符串 → Base64 解码
    byte[] decoded = Base64.decode(baos.toString("UTF-8"), 0);

    // 3. 长度校验(>= 24)
    if (decoded.length < 24) return null;

    // 4. 从偏移 8-23 取 16 字节(看起来像 IV,但实际是全零,见后文)
    System.arraycopy(decoded, 8, new byte[16], 0, 16);

    // 5. 偏移 24 之后才是真正的密文
    int len = decoded.length - 24;
    byte[] cipher = new byte[len];
    System.arraycopy(decoded, 24, cipher, 0, len);

    // 6. 调用 native 解密(只传密文,不传 IV!)
    byte[] plain = NativeBridge.nativeDecryptCfg(cipher);
    return new String(plain, UTF_8);
}

接下来得用ida了,jadx没什么东西了,将apk后缀改为zip,然后解压

用ida分析一下这个so文件

查看加密函数

继续往下看,看到w3 = 0x20 = 32对应AES-256(128/192/256 对应 16/24/32)

然后16 字节 IV + CBC 模式 对应 AES-256-CBC,答案就出来了

04 分析该刷单APP的 assets/cfg.bin文件,解密key是多少?

47f32b6c3c50f7474f3a14787ef790f46d326e7a33a758d0c7e452cb120e0700

密钥其实就是这里的v10

读取 .rodata 0xdbf处32字节,得到key

47f32b6c3c50f7474f3a14787ef790f46d326e7a33a758d0c7e452cb120e0700

05 分析该刷单APP的assets/cfg.bin文件,其中记录的备份IP地址及端口是多少?

121.43.187.92:8080

前面几道题都在为这个题做铺垫了,直接去解密

python 复制代码
from Crypto.Cipher import AES
from Crypto.Util.Padding import unpad
import base64

key = bytes.fromhex('47f32b6c3c50f7474f3a14787ef790f46d326e7a33a758d0c7e452cb120e0700')
iv  = bytes.fromhex('9f4a2c18e6b7d053f8c1aa90d33b44e1')

cfg = open('assets/cfg.bin','rb').read()
decoded = base64.b64decode(cfg)         
cipher = decoded[24:]                   

pt = AES.new(key, AES.MODE_CBC, iv).decrypt(cipher)
pt = unpad(pt, 16)
print(pt.decode('utf-8'))

06 分析提取的HuangHe2026.exe,根据 DIE(Detect-It-Easy)识别结果,该 PE 文件使用的编译器及版本是?

A. Microsoft Visual C++ 6.0

B. Borland Delphi 6

C. MinGW GCC 4.x

D. Microsoft Visual Basic 6.0

E. Borland C++ Builder 6

B

直接使用die看一下

07 分析提取的HuangHe2026.exe,该 PE 文件包含多少个节区(Section)?

8

由上图可以看到节为0008

08 分析提取的HuangHe2026.exe,该 PE 文件入口点(Entry Point)的虚拟地址(VA)是多少?

0x492040

可以直接看到入口点为00492040

09 分析提取的HuangHe2026.exe,程序读取/写入的注册表值(Value Name)名是?

Start

用ida打开,shift+F12看到一下路径

追踪交叉引用一下,发现了核心逻辑

关键函数是 sub_491714(读取注册表)和 sub_491844(写入注册表)

ReadInteger(v7, &str_Start1) --- 读取的 Value Name 变量名为 str_Start

WriteInteger(v34, &str_Start_01, 3) 和 WriteInteger(v34, &str_Start_01, 4) --- 写入的 Value Name 变量名为 str_Start_0

str_Startstr_Start_0 是 IDA 对同一字符串 "Start" 的两个引用副本,指向的内容一致。

完整注册表路径

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\USBSTOR

Value Name = Start

10 分析提取的HuangHe2026.exe,该应用的主要功能是什么?

A. 对插入的 USB 存储设备进行全盘加密,未授权设备无法读取数据

B. 完全卸载 Windows 系统中的所有 USB 主机控制器驱动程序,永久移除 USB 端口功能

C. 监控 USB 设备插拔事件并记录日志到本地文件,供管理员审计使用

D. 启用/禁用 Windows 系统的 USB 大容量存储设备(U 盘/移动硬盘等),通过修改注册表和重命名驱动 INF 文件实现

E. 通过 USB HID 接口模拟键盘输入,实现自动化测试或攻击载荷投递

D

选项 内容 排除理由
A 对 USB 存储设备全盘加密 CryptEncrypt/BCryptEncrypt/BitLocker等 API 调用;无加密逻辑
B 完全卸载 USB 主机控制器驱动 程序使用 RenameFile重命名 驱动文件,非卸载/删除;仅针对 UsbStor.inf/UsbStor.pnf,非主机控制器
C 监控 USB 插拔并记录日志 RegisterDeviceNotification/WM_DEVICECHANGE消息处理;无日志文件写入逻辑
D 启用/禁用 USB 大容量存储 完全匹配Start=3/4切换 + RenameFile 重命名 UsbStor.inf/UsbStor.pnf
E USB HID 模拟键盘输入 HID/SendInput/keyboard/CreateFileA(\\\\.\\HID...)相关调用

功能逻辑总结

服务器取证

总体来说,这份检材的服务器取证并不难,可以作为新手学习服务器取证关于宝塔面板的入门题

看有些wp说要分配ip地址,这边我nat仿真之后直接就有ip

改一下nat的ip配置

finalshell直接就连上了

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

A. CentOS 7.9 x86_64

B. Ubuntu 22.04 aarch64

C. openEuler 24.03 x86_64

D. Debian 12 x86_64

C

直接看分析结果即可

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

A. e8650b2c-938c-4063-bb04-d91bb6fc4ef2

B. 7ca80e58-3dae-4109-8c6c-21c706950d52

C. d7f7ecef-6f94-40fa-8532-85218c1358d8

D. 6B09-FE8F

B

直接查看一下blkid

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

ext4

直接可以看到

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

A. 网卡名称为ens33

B. IPv4默认网关为192.168.77.1

C. IPv4地址为192.168.77.130

D. UUID为707bf904-5157-4606-b7fe-aa403b6e0481

CD

查看网卡配置

cat /etc/sysconfig/network-scripts/ifcfg-ens160

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

A. 36912

B. 38497

C. /7921b4a7

D. /7c09f4b5

BD

宝塔基础命令,输入bt 14即可看到

或者直接看超大的分析结果,全都有

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

eswr2ymq

见上题,一眼就看到了

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

180.111.28.195

接下来输入bt 5,修改一下密码,然后登录宝塔面板

成功登陆

点击设置,面板设置,可以看到公网ip

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

CVE-2021-4034

查看日志信息

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

fb5a2ab4f542f486

直接看分析结果

或者在宝塔面板中看

10 分析该服务器中部署的MySQL数据库,其中共包含多少条邮件收发记录?

52

点击管理数据库,可以看到有52条

11 Redis 服务器的访问密码是什么?Redis 中共缓存了多少个 key?

TuoxinRedis2026、66

在超大分析配置文件发现是乱码

在宝塔面板搜索一下文件

在最后一行可以看到

查看数据库,有66个

12 服务器中部署的网站"拓鑫商城"使用了什么 Web 框架?

A. Laravel

B. Django

C. ThinkPHP

D. Spring Boot

C

查看一下网站目录文件

13 该服务器中部署的网站"拓鑫商城",上次手动备份的日期时间是什么?

A. 2026-03-06 14:30:15

B. 2026-03-07 14:30:15

C. 2026-07-06 14:30:15

D. 2026-07-07 14:30:15

D

点击网站备份可以看到时间

14 关于"拓鑫商城"使用的数据库描述正确的是?

A. 使用MySQL数据库

B. 使用的MySQL数据库端口为3306

C. 使用PostgreSQL数据库

D. 使用的PostgreSQL数据库端口为5432

CD

直接看网站的数据库文件

15 "拓鑫商城"使用的数据库密码是多少?

Tuoxin@2026_DB

由上题可知

16 管理员赵天龙(admin)的密码明文是什么?

Passw0rd

用navicat连接一下数据库

查看user表,看到哈希值

爆破一下

17 "拓鑫商城"的刷单任务大厅中,当前显示正在进行中的刷单任务有多少个?

10

打开商城看一眼,有10个

18 登录"拓鑫商城"的后台管理页面,受害人卫永峰在2025-12-29 ~ 2026-03-29购买了多少份智能合约产品"鲨鱼鳍结构化"

5

其实登录数据库之后就不用登录后台页面了

这里看别的wp说需要改配置文件,但是我这里依旧直接可以访问,不知道什么情况

19 接上题,"鲨鱼鳍结构化"的合约地址是多少?

0xAC785C81EB039C101B4175BB5BB66F8CA08B6A3C

在网站找不到合约地址,去数据库找吧

20 "拓鑫商城"数据库中的用户手机号使用加密算法加密,加密密钥是什么?

TJ_huanghe_2026

既然是加密,那就看看网站文件哪个和加密有关,翻了翻看到个关于加密的文件

/www/wwwroot/tuoxin.com/app/lib/CryptoHelper.php找到key

21 "拓鑫商城"管理后台中的"合约投资交流群"的群主用户名是什么?

dengchao

在客服系统这里看到群聊

群主是杨红

搜索一下,看到两个杨红

数据库里查询一下,是id为22创建的

查看一下id为22的

22 "拓鑫商城"启动了以下哪些网站防护规则?(多选题)

A. SQL注入防御

B. XSS防御

C. 恶意文件上传防御

D. 恶意爬虫防御

ABCD

在宝塔面板中看一下

23 服务器上正在运行(重启策略为:停止后马上重启)的 AI 推理Docker容器名称是什么?

alpine-llama-cpp-server

查看docker一眼可以看到

24 接上题,该AI 推理Docker容器中部署加载的大语言模型参数量是多少?

0.8B

进网站看一下

25 接上题,上述部署加载的模型,设置的上下文长度是多少tokens?

117760

这道题有问题,以下为范叔做出的解释

因为在这边作者启动的时候并没有指认传递上下文长度的参数进去,即启动就没有传递--ctx-size参数来设置上下文长度

所以llama.cpp就自动根据宿主机的内存大小来设置上下文了。

我们的火眼默认仿真是4G内存,所以标准答案以及大多数人做的答案就都是117760

但如果你开8g,llama.cpp会自动开满262k上下文导致你这边显示的是262k

如果设置的内存是2G,又会导致上下文显示是117760的减半

26 服务器上已停止(重启策略为:不重启)的Docker容器,使用的镜像ID是多少?

4a01b014fae7

就这一个

27 接上题,启动该容器,访问相应服务地址,其中配置的大模型接口地址为?

http://172.17.0.1:6699

先启动一下容器,然后查看配置文件

docker inspect nextchat

28 该服务器中部署的FileBrowser默认管理员密码是什么?

FCHZTo0mAYzxRxka

在系统日志中找到密码

29 分析嫌疑人存储在服务器中的"料子",其中城市为南京的受害人有多少个?

84

打开一下网页,输入账号密码

在data文件夹中看到一个我的料子.xslx,下载一下,工作表太多了,写脚本分析一下

python 复制代码
import openpyxl
import os

file_path = '/www/wwwroot/tuoxin.com/public/uploads/data/料子/我的料子.xlsx'
wb = openpyxl.load_workbook(file_path, read_only=True)

print(f"工作表总数: {len(wb.sheetnames)}")
print(f"工作表列表: {wb.sheetnames}")

nj_count = 0
total_count = 0

for sheet_name in wb.sheetnames:
    sheet = wb[sheet_name]
    for row in sheet.iter_rows(min_row=2, values_only=True):
        if row[0] is not None:
            total_count += 1
            if row[2] == '南京':
                nj_count += 1

print(f"\n总记录数: {total_count}")
print(f"南京受害人数量: {nj_count}")

wb.close()

30 分析嫌疑人存储在服务器中的所有月工资表,杨红的全部实发工资是多少?

1180380

在工资表中下载所有文件,或者在服务器中写脚本

依旧脚本统计

python 复制代码
import openpyxl
import os

salary_dir = '/www/wwwroot/tuoxin.com/public/uploads/data/月工资表/'

total = 0
file_count = 0

for file_name in os.listdir(salary_dir):
    if file_name.endswith('.xlsx') or file_name.endswith('.xls'):
        file_path = os.path.join(salary_dir, file_name)
        file_count += 1
        wb = openpyxl.load_workbook(file_path, read_only=True)
        
        for sheet_name in wb.sheetnames:
            sheet = wb[sheet_name]
            for row in sheet.iter_rows(min_row=2, values_only=True):
                if row[0] == '杨红':
                    total += row[3]
        
        wb.close()

print(f"工资表文件数: {file_count}")
print(f"杨红全部实发工资: {total}")