2025数证决赛个人
检材密码:!fR7$pX3&zT9@kL5*wV1#sG7%qD3^yA9(mB2)jN6~hY4+gC8dW2=eK5;fX7?vM3[oL9]tR4}uS1<yJ5>iP8_bH3:zD6"nQ2'pF4lA7|sC1\wE9/rT3=vY6
一、 计算机取证(让我们打一辈子取证好么~)
贴脸开大(从没觉得做取证开心过doge)



这回试了试前两天看到的新功能,果然比较慢,目测没两个小时跑不完,不过好在一来就输出了答案
仿真后如果需要关闭平板模式的,使用快捷键:win+A
-
请分析计算机检材,用户曾远程连接过IP为192.168.114.51的主机,其远程登陆密码为多少?
uika

-
请分析计算机检材,发现嫌疑人有一定的密码构造习惯,依据其密码使用习惯找出嫌疑人购买拷贝的公民信息表格的密码。

经典浏览器打开发现构成很像

然后看到了这个表格
爆破的设置:
Doloris@
Doloris@????

密码就是Doloris@0721
直接打不开,需要修复:
-
请分析计算机检材,其中有一模拟器备份文件,请找出用户常用笔记app锁定密码是多少?

赛博厨子打开
Prase QR Code,点normalise image

KFCVme50
但不知道是不是
还有一个残缺的,ps修复以后:

解压密码:KFCVme50
保险箱密码:我的模拟器被勒索的时间【格式:20251001】

这个是在数据库里看到的,我没什么思路,不知道为啥在这(藏在模拟器记事本备份)
20250228 -
接上题,app中记录了保险箱密码,该密码是?
MYGPS
mt管理器导入数据库实现apk仿真:
外部:/storage/emulated/0/Pictures/包名/
内部:/data/data/
把外部目录下的包文件直接放到内部这个data目录下
然后重启软件就大概率可以

上一题的数据库里可看
下载里有个pdf,修复文件头出来这个


-
请分析模拟器备份,内部转账银行卡号是多少?
-
分析计算机检材,嫌疑人通过换脸软件一共生成了几张图片?
5张
在facefusion的output里面有5张 -
接上题,嫌疑人使用换脸软件过程中,选择次数最多的源图片名称?
3d41fc4422dbc33a31ab182179b2117e.jpg
五张中有两张是一样图源,打开photo文件夹找到这张图 -
接上题,嫌疑人使用换脸软件过程中,一共尝试了几种换脸模型?

三种model
在job的complete的文件夹里有日志 -
请分析计算机检材,嫌疑人有一个密码管理软件,记录了备用机密码,请找到该密码。
锁定是keepass,然后快速访问里面有个kp.txt
16161616
打开软件后复制下来密码
22E4828017 -
请分析计算机检材,找出文件MD5哈希值为d58c3e31ec6eaecb9026af9821dad645的文件,写出其文件名。
index.4682354987edf.js
法一:efdd

然后我们就打开了这个bitlocker盘


找到了
挂不起的时候:
这里不要初始化不然就废了
后来发现是硬盘拔插的问题,重挂一下检材就好
法二:lovelymem

找到了KVEK形式的密码

bdemount可以处理,懒得搞就没继续了 -
请分析计算机检材,找出虚拟硬盘内隐藏的VC容器,并使用公民信息表格中身份证号为明显伪造者的地址解密,回答该容器中包含多少个文件。
4
使用“刚买到的一会处理.xlsx”中明显位数不正常的身份证号码信息解密看到内部文件。容器密码:山东省济南市历下区经十路200号

-
对计算机检材进行分析,其中有个NAS存储,对NAS磁盘分析,找出姓名为"谢妍尚"的手机号。
随便一翻就翻得到:

然后ufs秒组

就这两个文件,一开始没找到,哪还找个vc,结果这个vc密钥文件根本没有用

在sheet3里,堂完了我。
移动终端取证
- 分析手机检材,检材的MEID号是多少?

99001844373347 - 手机备忘录软件里有一串压缩包解密密码,请问密码是多少?
备忘录统一搜note

压缩包解密密码:xinglo-chat - 手机曾安装过一个小众聊天软件,分析其APP的包名为?
小众聊天搜搜chat

com.xinglo.chat - 小众聊天软件官网Email地址疑似被加密,请找出解密密钥(Key)为?
前面的inote数据库能看到这条消息:
美好的一天从现在开始!
unit AESDecrypt;
interface
uses
Windows, SysUtils, Classes, IdCoder, IdCoder3to4, IdCrypt, IdCryptAES;
function DecryptAES(const Ciphertext, Key, IV: string): string;
implementation
function DecryptAES(const Ciphertext, Key, IV: string): string;
var
AES: TIdAES;
Decoder: TIdBase64Decoder;
Input, Output, KeyBytes, IVBytes: TBytes;
InputStream, OutputStream: TStringStream;
begin
Decoder := TIdBase64Decoder.Create(nil);
InputStream := TStringStream.Create(Ciphertext);
OutputStream := TStringStream.Create('');
try
Decoder.InputStream := InputStream;
Decoder.OutputStream := OutputStream;
Decoder.Decode;
Input := OutputStream.Bytes;
finally
Decoder.Free;
InputStream.Free;
OutputStream.Free;
end;
KeyBytes := TEncoding.UTF8.GetBytes(Key);
IVBytes := TEncoding.UTF8.GetBytes(IV);
AES := TIdAES.Create(nil);
try
AES.BlockSize := 128;
AES.KeySize := 128;
AES.Mode := cmCBC;
AES.Padding := padPKCS7;
AES.Key := KeyBytes;
AES.IV := IVBytes;
SetLength(Output, Length(Input));
AES.DecryptBuffer(Output[0], Input[0], Length(Input));
Result := TEncoding.UTF8.GetString(Output);
finally
AES.Free;
end;
end;
procedure TestDecrypt;
var
Ciphertext, Key, IV, Plaintext: string;
begin
Ciphertext := ''; '等待传参
Key := 'XingLuoChat2024!';
IV := '1234567890abcdef';
Plaintext := DecryptAES(Ciphertext, Key, IV);
ShowMessage(Plaintext);
end;
end.
XingLuoChat2024!
5. 接上题,请分析小众聊天软件官网的Email地址为?
用ai写好解密脚本:
import base64
from Crypto.Cipher import AES
from Crypto.Util.Padding import unpad
def decrypt_aes(ciphertext_b64, key_str, iv_str):
try:
# 1. 准备 Key 和 IV
key = key_str.encode('utf-8')
iv = iv_str.encode('utf-8')
# 2. Base64 解码密文
ciphertext = base64.b64decode(ciphertext_b64)
# 3. 初始化 AES Cipher (CBC模式)
cipher = AES.new(key, AES.MODE_CBC, iv)
# 4. 解密并去除填充 (PKCS7)
plaintext_padded = cipher.decrypt(ciphertext)
plaintext = unpad(plaintext_padded, AES.block_size)
return plaintext.decode('utf-8')
except Exception as e:
return f"解密失败: {str(e)}"
if __name__ == "__main__":
# 请在下方填入您要解密的 Base64 字符串
Ciphertext = "" # <--- 在这里填入密文
Key = "XingLuoChat2024!"
IV = "1234567890abcdef"
if not Ciphertext:
print("请先在代码中填入 Ciphertext (密文)")
else:
result = decrypt_aes(Ciphertext, Key, IV)
print(f"解密结果: {result}")

缓存里看到一个前端的缓存,怀疑可以搞到官网网址

看到邮箱旁边有隐藏内容:
M2ZiMDExMWQ2ZWUwYzI5OWJhMzFjZmE3OTVhN2Q4YjAzNzY3N2ExOWE3NGI2MWI5N2Y0OWU4M2MwMWJiZTk3Ng==
,拿去解密一下

support@xingluochat.com
- 在本案件中,张明向王芳已支付的总金额为多少元?
在chat数据库里筛选出聊天记录,然后喂给ai
SELECT group_concat(content, char(10))
FROM chat_logs
ORDER BY send_time ASC;

88万
-
李伟在非工作时间(18:00-次日8:00)向王芳发送的加密文件数量占其向王芳发送的所有加密文件数量的百分比为多少?
ai代码筛选

-
分析手机检材,检材中的记账app是通过应用市场APP安装的,该应用市场的包名是?

com.xiaomi.market
搞错了,细看在wandoujia这个目录下:

所以是豌豆荚
com.wandoujia.phoenix2 -
分析手机检材,检材中的记账app安装包MD5为?


003e9c929adf12a56770dc5d9c5109a6 -
分析手机检材,嫌疑人记账APP中的支出项一共有几个分类?
7

不对,是支出项,后面方针起来了看到是4

-
分析手机检材,最终张总给了嫌疑人多少钱?
先apk仿真:

共享文件中把数据文件夹拖进去
MT管理器拷贝到内部/data/data目录下

修改用户组都改成
10064 - u0_a64
应用到子文件两个全部勾选
重启apk

frida启动(一开始不行,换了下frida版本就可以了,兼容问题,在雷电的设置里面:

密码是0410

进去备卡出来了,一次性数据库这一块
断网大法,重装数据库文件夹,并开启飞行模式

看到定金加尾款150000 -
分析手机检材,检材中的记账app的隐私密码是什么?
0410
前面frida跑出来了
服务器取证
- AI服务的对外端口是多少?
找一下看到ai的服务在

然后看到有一个nohup.out文件,这是输出日志

看到 Open Langflow → http://localhost:7860
端口号为7860 - 当前AI服务共有多少普通用户?
思路是看数据库:
打开.env文件,这个文件通常用于存储环境变量配置,

在.env里搜索database

问了问ai
root@yxtserver:~# find / -name "langflow.db" 2>/dev/null
/home/langflow/lib/python3.10/site-packages/langflow/langflow.db
/root/.cache/langflow/langflow.db
搜到数据库以后进去看


注意第一个是超级用户
8个
-
已知管理员密码是xxxx@2025,x为小写字母,AI服务的管理员明文密码是多少?
sszb@2025
写个字典用hashcat爆一下:

密码:sszb@2025
启动ai服务:
/home/langflow/bin/langflow run --env-file /home/langflow/.env


-
AI服务的对话历史中某个用户上传了一个文件,该文件sha256后八位是多少?
31fa8c0f-e569-4399-b8ec-5d866bbd095c/2025-11-04_11-20-38_play.png
message表里有这个文件



7852b855
5. 已知黑客攻击了AI服务器获取了权限,该黑客利用了哪个接口uri进行攻击的?
在找到数据库的目录下能看到一个log文件,分析一下:

/api/v1/files/upload/a9a80eb5-e5ef-4310-9468-ee96f570b4ac
-
已知黑客攻击了AI服务器获取了权限,请问黑客反弹shell的连接的端口是多少?
7788
ai搓出来的分析脚本

-
黑客通过ssh登录服务器所用的ip是多少?
查看SSH登录记录


也可以a脚本撕开
172.23.194.1 -
已知黑客入侵服务器后植入了一个隐藏文件,该程序的全路径(包括扩展名)为?
程序功能分析
- 分析程序"MicroSoft-Edge.zip",实现"对桌面文件遍历并加密"逻辑的动态链接库文件为?
看到壳里面是一个.net程序


结合ida例分析也可以确定是.net
静态分析+白名单过滤缩小范围:
import re
path = r'C:\Users\27516\Desktop\MicroSoft-Edge.exe'
try:
with open(path, 'rb') as f:
data = f.read()
except FileNotFoundError:
print("找不到文件,请检查路径")
exit()
# ---------------------------
# 优化点 1: 双模搜索 (ASCII + UTF-16)# ---------------------------
# ASCII 模式
pat_ascii = re.compile(br'[A-Za-z0-9_.-]{3,80}\.dll', re.IGNORECASE)
# UTF-16LE 模式 (匹配可见字符后跟一个\x00)
pat_wide = re.compile(br'(?:[A-Za-z0-9_.-]\x00){3,80}\.dll\x00', re.IGNORECASE)
items = []
# 提取 ASCIIfor m in pat_ascii.finditer(data):
try:
items.append(m.group().decode('ascii'))
except:
pass
# 提取 UTF-16 (需要把 \x00 去掉才能变成正常字符串)
for m in pat_wide.finditer(data):
try:
items.append(m.group().decode('utf-16le'))
except:
pass
# 去重
uniq = sorted(set(items), key=str.lower)
# ---------------------------
# 优化点 2: 更狠的黑名单 (根据之前运行结果补充)
# ---------------------------
# 这些是之前 99 个结果里出现的干扰项,加进来屏蔽掉
ignore_prefixes = (
# 系统底层
'api-ms-', 'ext-ms-', 'msvcp', 'vcruntime', 'ucrt', 'kernel', 'user32',
'gdi', 'advapi', 'ole', 'shell', 'ntdll', 'ws2_', 'crypt', 'bcrypt', 'secur',
'shlwapi', 'comdlg', 'wininet', 'winhttp', 'version', 'mscoree', 'mscorlib',
'imm32', 'normaliz', 'dwmapi', 'uxtheme', 'urlmon', 'wldp', 'powrp',
# .NET / WPF 框架垃圾
'system.', 'microsoft.', 'windows.', 'netstandard', 'presentation',
'reachframework', 'milcore', 'uiautomation', 'accessibility', 'clrcompression',
'directwrite', 'd3d', 'windowsbase', 'windowsforms', 'visualbasic'
)
ignore_suffixes = ('.resources.dll', '.ni.dll')
sus = []
for s in uniq:
low = s.lower()
# 只要命中任意一个忽略前缀,就跳过
if low.startswith(ignore_prefixes): continue
# 只要命中任意一个忽略后缀,就跳过
if low.endswith(ignore_suffixes): continue
sus.append(s)
print(f'Total valid dll strings found: {len(uniq)}')
print('=' * 50)
print('Suspicious candidates (Most likely to least likely):')
print('=' * 50)
# ---------------------------
# 优化点 3: 简单的启发式排序
# ---------------------------
# 名字越短越可疑,名字里带 encrypt/hack 的越可疑
def score(name):
s = 0
if len(name) < 15: s += 10 # 名字短+10分
if 'encrypt' in name.lower(): s += 100 # 命中关键词+100分
return s
sus.sort(key=score, reverse=True)
for i, s in enumerate(sus[:30]):
print(f"[{i + 1}] {s}")

1、2可以得知的确有encrypt.dll这个资源
脚本dump出来

看到有一个encrypt的资源包里
通过主程序代码分析:


看到调用了这个库

基本确定了

还能看到执行功能的函数应该是这个Encryptfolder
再把MicroSoft_Edge.Resources.encrypt.dll给dump出来验证下

这里直接显示了 PE、DOS头说明这个内层是c++写的
查看exports
看到encryptfolder

进一步分析看到很明显的加密功能痕迹
encrypt.dll
2. 分析程序"MicroSoft-Edge.zip",程序从DLL中获取函数指针后,使用哪个API将其转换为委托并执行?
Marshal.GetDelegateForFunctionPointer

3. 分析程序"MicroSoft-Edge.zip",接上题,该动态链接库文件用于加密文件的加密算法为?
有明文提示是AES

-
分析程序"MicroSoft-Edge.zip",接上题,该加密算法的初始密钥(十六进制)?
-
分析程序"MicroSoft-Edge.zip",接上题,该加密算法的初始向量(十六进制)?
-
分析程序"MicroSoft-Edge.zip",对附件try.txt.enc进行解密,解密后的内容为?
网络流量分析
-
被攻击ip开放了多少个端口?
tcp.flags.syn == 1 && tcp.flags.ack == 1
(把所有“握手成功”的回包筛选出来)

可以看到攻击者是10.0.0.68,被攻击者是172.16.233.2

tcp筛选后从这里看到有七个port

-
攻击者攻击的站点是什么内容管理系统?

查看http的响应html代码
seacms -
攻击者通过暴力破解获取到的用户账号的密码是多少?
cslab
net-a梭出来的前面是账号后面是密码

-
攻击者上传的恶意文件MD5值为多少?
提取出来的exe

4a5d7db9cdfbbe9ef6be58add2dd7d43 -
攻击者使用蚁剑执行的最后一条命令是什么?
cd /d "C:/WWW/data/admin"&zhengxiang.exe&echo aae855ae69&cd&echo c39d656dc7b

-
通过流量分析可知,攻击者最终采用何种标准远控载荷类型,以维持正向连接Shell?
流量中被攻击的主机系统信息显示为64-bit Windows 10
传入的是pe文件
所以是windows/x64
攻击者主动去连接受害者的端口所以是bind_tcp
AntSword 执行命令后建立的那个 TCP 连接,其内容是二进制流(加密/混淆的 TLV 数据),而非明文的 CMD 提示符,所以是meterpreter/bind_tcp
windows/x64/meterpreter/bind_tcp
数据分析
- 分析数据库检材,直接推荐了最多下线用户共推荐了多少位下线。

思路来自zzpu213,软件好用的
可看到除了没有推荐人以外,第一是17个 - 分析数据库检材,用户等级为"合伙人"的用户USDT的总投资金额为?


按user_id连接表后查询

3. 分析数据库检材,平台在2022年度的平均每季度新增用户数为多少?
623
# 导入所需依赖
import pandas as pd
# 从dfs中提取所需的数据表
# dfs[0]: 名称:`raw_user_data`, 描述:用户数据表,包含用户信息和注册时间
# 获取原始用户数据
user_df = dfs[0]
# 将register_time转换为datetime类型
user_df['register_time'] = pd.to_datetime(user_df['register_time'])
# 筛选2022年度的注册用户
users_2022 = user_df[(user_df['register_time'] >= '2022-01-01') &
(user_df['register_time'] <= '2022-12-31')]
# 按季度分组统计新增用户数
quarterly_new_users = users_2022['register_time'].dt.to_period('Q').value_counts().sort_index()
# 计算平均每季度新增用户数
avg_quarterly_new_users = quarterly_new_users.mean()
# 创建结果字典
result = {
"type": "string",
"value": f"平台在2022年度的平均每季度新增用户数为: {avg_quarterly_new_users:.1f}"
}
- 分析数据库检材,在用户推荐关系网络中,层级最深的用户链条包含多少个用户。
7
# 导入所需依赖
import pandas as pd
import networkx as nx
# 从dfs中提取所需的数据表
# dfs[0]: 名称:`raw_user_data`, 描述:用户数据表,包含用户信息和推荐关系
# 获取原始用户数据
user_df = dfs[0]
# 创建有向图来存储用户推荐关系
G = nx.DiGraph()
# 添加节点和边
for _, row in user_df.iterrows():
if pd.notna(row['recommender_id']) and row['recommender_id'] in user_df['user_id'].values:
G.add_edge(row['recommender_id'], row['user_id'])
# 找出所有无入度的节点(可能是根节点)
roots = [node for node in G.nodes() if G.in_degree(node) == 0]
# 计算从每个根节点出发的最长路径
max_depth = 0
for root in roots:
lengths = nx.shortest_path_length(G, root)
if lengths: # 确保有子节点
current_max = max(lengths.values())
if current_max > max_depth:
max_depth = current_max
# 最长链条的用户数量 = 路径长度 + 1 (因为路径长度计算的是边的数量)
longest_chain_users = max_depth + 1 if max_depth > 0 else 1
# 创建结果字典
result = {
"type": "string",
"value": f"用户层级中最深的链条包含 {longest_chain_users} 个用户"
}
也可以用软件:
把user表导入组织架构

null除去是7层
5. 分析数据库检材,该平台用户在同一时间内同时进行2笔以上大额交易(单笔数值>5000)的异常用户有多少人?
SELECT COUNT(DISTINCT user_id) AS 异常用户总数
FROM (
SELECT user_id, DATE(trans_time) as trans_date
FROM financial_transactions
WHERE amount > 5000 and status == '成功'
GROUP BY user_id, trans_date
HAVING COUNT(*) >= 2
);
8

6. 分析数据库检材,2023年10月11日之前的90天内无任何交易且此前为活跃用户(注册后90天内有过交易)的潜在失效用户有多少?
SELECT COUNT(*) AS 潜在失效用户数
FROM (
-- 第一步:筛选出“注册后90天内有过【成功】交易”的活跃老用户
SELECT DISTINCT t.user_id
FROM financial_transactions t
JOIN raw_user_data u ON t.user_id = u.user_id
WHERE t.trans_time >= u.register_time
AND t.trans_time <= DATETIME(u.register_time, '+90 days')
AND t.status = '成功' -- 新增条件
) AS valid_users
WHERE user_id NOT IN (
-- 第二步:排除掉在“近期90天窗口期”内有【成功】交易的用户
SELECT DISTINCT user_id
FROM financial_transactions
WHERE trans_time >= '2023-07-13 00:00:00'
AND trans_time < '2023-10-11 00:00:00'
AND status = '成功' -- 新增条件
);
662

假期里一直在治病耽搁了,逆向好难...

浙公网安备 33010602011771号