第五届全国电子取证大赛 FIC决赛
作者: 彩虹七号
FIC学生组排名 第四
本次比赛可能确实是比赛紧张了,感觉很多题都是可以做出来的。
前言
这次比赛算是糖太宗和他的左右护法这个学期第一次参加线下取证比赛,糖太宗AK了服务器部分带飞了在做手机部分卡在没找到UUID的右护法和在做计算机部分卡在不会调分辨率的左护法,第一次夺得了线下一等奖。感觉这次计算机、手机和路由器和后面的服务器和apk根本不是一个难度的,出题人真的难评。。。 ——右护法
被糖太宗带飞了——左护法
FIC 容器密码F!C_2025-Final@决~赛#x7Pz!
服务器
请分析检材3,该操作系统版本号为

24.04.1
请分析检材3,该主机名为

api-server-2
请分析检材3,该ens33网卡IP地址为
做到这个题预期应该是仿真然后进去之后ip a ,或者直接查看网络配置文件,因为后面会用到仿真之后的一些东西我先直接仿真
会发现root用户根本登录不进去,因为没有root用户,在shadow里面看到一个king用户这个是服务器唯一的用户
使用rockyou字典爆破hash发现king用户的密码为123456但是这个是错误的,登陆不进去在etc下找到可疑文件my_two_factor_pwdfile ,根据下面题目的提示可以知道密码由king+(三位数字组成),生成一个字典,从king001~king999进行hash爆破最后出来时king110

ip 地址为172.16.10.254
请分析检材3,操作系统登录使用了第三方身份验证,该技术为

在/etc/pam.d/common-auth中可以看到登录技术为
pam_pwdfile
请分析检材3,该身份验证的加密算法为?
在/etc/pam.d/common-auth中可以看到加密技术为Bcrypt

请分析检材3,该保存king用户密码的文件名为?
这个上面写到过了my_two_factor_pwdfile

请分析检材3,尝试爆破king用户,其密码为(king字母加3个数字)?
上面写过生成字典使用hashcat爆破就行或者直接掩码爆破如下
# $2a$10$V/8GUI5aTNSnbFodPjP7Zu6vCFSXmvdd9oKHGtWv/vbT3Q4LLTCcW
hashcat -m 3200 -a 3 -o found.txt hash.txt king?d?d?d
king110
请分析检材3,该WEB-API配置的 MySQL 数据库服务器地址为
这个xshell连上之后就翻一下配置文件就行了

172.16.10.200
请分析检材3,其中用于 WEB-API 测试的流量包文件名为
其实这个题一眼是test.pcap
就在加目录下,但是具体要看的话看下历史命令也知道


请分析检材3WEB-API,该容器的数据库内容被SO所加密,该SO文件名为

请继续分析上题SO文件,该文件的编译器类型为
GCC

请继续分析上题SO文件,在SO文件的encrypt函数中,该加密算法为

请继续分析上题SO文件,尝试分析getAeskey函数,该KEY值为
zhaohongzhaohongzhaohongzhaohong


进行了一次0x44的异或,由于提取出来是的小端序存储的数据,我们需要进行一次倒序,然后这是AES-256,所以key是32字节的,这里还差一半,但是看起来是对密钥进行了一次复制到这32字节上面,所以key是zhaohongzhaohong*2
请继续分析上题SO文件,尝试分析get_flag1函数,该返回值为

请继续分析上题SO文件,尝试分析get_flag2函数,该返回值为

再进到compute_flag2()里面 
问AI
获取 compute_flag2 返回的 flag 最简单、靠谱的方法就是在运行时把它 call 一下,然后直接打印它返回的字符串。
写一个最简 Loader + 在 GDB 下跑
- 查看导出符号
readelf -Ws libflag2.so | grep get_flag2
# 或者
nm -D libflag2.so | grep flag2
确认get_flag2 或 compute_flag2 可被 dlsym 到。
- 写个 C 程序动态加载并调用(存为
dump_flag2.c):
#include <stdio.h>
#include <stdlib.h>
#include <dlfcn.h>
typedef char *(*get_flag2_t)(void);
int main() {
void *hdl = dlopen("./libflag2.so", RTLD_NOW);
if (!hdl) {
fprintf(stderr, "dlopen failed: %s\n", dlerror());
return 1;
}
get_flag2_t get_flag2 = (get_flag2_t)dlsym(hdl, "get_flag2");
if (!get_flag2) {
fprintf(stderr, "dlsym failed: %s\n", dlerror());
return 1;
}
char *flag = get_flag2();
printf("flag2 = %s\n", flag);
return 0;
}
- 编译
gcc -o dump_flag2 dump_flag2.c -ldl
- 在 GDB 下运行
gdb -q --args ./dump_flag2
(gdb) run
# 由于在 gdb 下运行,is_debugger_present() 会返回真
# get_flag2 会返回 compute_flag2 得到的真实 flag
程序正常跑完后,标准输出就会打印出真实 flag。

请继续分析上题SO文件,尝试分析decrypt函数,该密文dnJXwBR4qc+1Y4WB6ZxR0A==的明文为
FICerisgood



请分析检材3数据库,在 products 表中,统计商品型号的种类数量(例如以 ZK、CW 等为前缀的型号)
首先直接启动一下这个容器然后连一下navicat就行

前面找到过密钥和iv了直接解密一下就行
key是zhaohongzhaohongzhaohongzhaohong
iv是0123456789012345
然后最快的做法应该就是拿着硬盘拷一份这个表导出的sql文件然后直接带着sql文件去联网机跑ai然后后三题答案就出来了
**注