2026FIC服务器WP(残缺版)
FIC服务器取证WriteUp(残缺版)
前言:这次依旧一上来就奔着服务器去,真是一场酣畅淋漓哈基米啊,且听我我娓娓道来(由于刚比完赛咕了一会,后面做了一天之后发现软件授权到期了,于是暂时停止了复盘,再后面就是五一放假了哈哈哈,有些题目没有咕完,以后一定补.jpg):
首先感谢两位队友,队友强强,这次比赛最终名次综合职业组和学生组是十几名名拿到了一等奖,虽然能有50支队伍,但是emmm….最终应该是没法进入总决赛了,学校大佬太多,主办方限制只给出两个队伍,呜呜呜呜…
前置准备
毕竟是弘连的比赛,先用他们的软件分析一下

火眼分析出来只有系统引导那些文件,其他都是未分配簇,直接仿真也无果(故事伏笔),我的第一想法是这是个raid盘,于是用了火眼自家的raid重组软件,记得先导入root的,再导入volume的填好参数之后点生成文件,不得不说火眼的交互和UI确实做的不错,不像是那种古早软件。

按照参数填好,生成一个逻辑盘,里面有一个.001文件,然后把这个文件扔进去火眼分析,然后噩梦就开始了…
期初火眼分析一直分析不出来,应该是因为没有引导和启动盘的原因,但是我太菜了不知道怎么手动加进去这个.001里面,于是开始投向美亚取证大师,最后艰苦等了三四十分钟,美亚先分析出来了,美亚有时候感觉确实快一点,但是美亚感觉交互和UI做的没有火眼那么顺眼,点击反馈也是火眼好一些,分析出来的完整度也是各有各的擅长之处,只能说各有千秋吧。然后做题做到中途,手贱把这个重组raid的软件关掉了,结果连逻辑磁盘也掉了,隐隐感觉不对劲,一点击任意一个文件果然检材未上线报500错误,然后发现重组之后文件名会根据当前时间戳改变,于是把文件名改成一致的,结果.001文件好像直接变成0kb大小了,于是我又跑了一遍分析,又是艰苦的40分钟,结果跑完之后发现可以直接改检材来源路径……白白浪费40分钟,到这里其实已经很麻烦了,但是…
主办方其实在比赛前应该是23号(个人根据版本号的猜测)?推了一个新的火眼仿真取证版本4.6.5.2643,我比赛的时候才看到,也没有来得及更新了,我的版本还在4.6.5.2622,赛后才发现其实最新版的仿真软件能一键仿真出来,不用做任何处理,不要重组raid,也不需要看条带大小,也不用找起始扇区,只需要把两个e01文件导入然后仿真即可,仿真出来是一个图形化界面的ubuntu(服务器怎么会用GUI呢?肯定有问题),emmm道心破碎了,还是经验不够丰富,确实之前一直没有仿真的习惯,都是在文件系统翻找的,以后一定一来就先仿真。以后一定记得赛前检查版本更新做好准备呜呜呜。
记住要先添加E01再添加E02


服务器部分
1、该服务器主机操作系统版本为
在美亚软件里面梭出来是
按照他的格式应该是写:
1 | 13.0 |
2、该服务器根分区硬盘的uuid号为
uuid在最初的文件里面也有

也可以去fstab找,进/etc/fstab,这里简要介绍一下这个文件后面会用到,操作系统启动时会自动读取这个文件的内容,按里面配置,自动挂载硬盘,里面存有设备的UUID(3231e52f-5e15-44c4-b224-e29cb4201c0e),盘符挂载点(把子卷@rootfs挂载到/),还有文件系统(btrfs)等等

1 | 3231e52f-5e15-44c4-b224-e29cb4201c0e |
3、该服务器中最新的docker镜像创建时间为
1 | docker images --format "{{.Repository}}\t{{.CreatedAt}}" | sort -k2r |
其中format里面,.Repository是镜像名,.CreatedAt是创建时间,管道输入降序排列。诶?这时你是不是开始懵了,为什么我的命令执行会出错呢?为什么我的docker找不到呢?为什么我仿真出来的的fstab内容和你的不一样呢?
正如前面怀疑为什么服务器会使用图形化界面,这里肯定有问题,于是怀疑是不是仿真的不完整,还是启动的磁盘不对,这里涉及到一些知识点,我们先看挂载信息
1 | cat /proc/self/mountinfo |
挂载信息会输出出来一坨东西,或者看看挂载点,这个更好看一点
1 | findmnt / |

这里看到一个overlay,overlay是一个分层文件系统常在docker里面见到,意思是当前根目录并不是挂载在一个真是的物理磁盘中,而是一个叠加的虚拟文件系统,按理来说这个系统应该是来源于一个真实的物理磁盘,类似于/dev/md0才对,这里已经初见端倪,我们再来看看根目录的结构

可以看到,目录下有很多的映射,这一般是因为docker的隔离环境并不是真正独立的Linux系统,许多文件依旧是通过映射而依赖宿主机的配置。最主要的还是.dockerenv这个文件,这个文件是系统启动时用来判断改系统为docker还是非docker的判断文件,内容一般为空,但是看到这个文件,说明当前环境是存在于一个docker中,大概是因为启动的时候把docker当做启动盘挂载,而没有挂载宿主机的盘符
重点来了,还记得前面说的fstab文件吗?系统启动的时候会自动根据这个文件的配置来挂载目录,回忆一下这个文件的内容
1 >UUID=3231e52f-5e15-44c4-b224-e29cb4201c0e / btrfs defaults,subvol=@rootfs 0 0这句话是原系统自己的配置,意思是:
1 >开机时把 UUID=3231... 的 btrfs 文件系统,以 subvol=@rootfs 的方式挂到 /所以正确的根目录应该是
/dev/md0 的 @rootfs 子卷,说明白一点就是说主系统的根目录应该是/dev/md0这个物理磁盘里面的,而前面我们发现当前根目录挂载来源是overlay,我们只需要把宿主机的物理磁盘挂载起来就好了
挂载命令
1 | # 创建挂载点 |
执行完这些挂载之后,在/mnt/evidence/下的就是宿主机真实的目录,如果想要也可以使用chroot目录切换一下根目录,到这里才算完整的仿真成功了,看起来很麻烦,这次仿真也花了我不少时间,不停的问ai不停的敲命令,但其实算下来从头到尾使用的命令并没有几条,对于那些大佬来说应该是洒洒水吧呜呜呜,不过这次赛后复盘仿真也确实学到了不少

回到第三题
前面挂载出来了磁盘,但是执行docker的命令还会出错,应该是要手动指定docker demon(ai说这个比较麻烦),但是我们挂载起来了就可以去翻文件系统了(又回到了我之前分析软件分析的做法…),当然你如果要看文件系统挂载也是必须要走的,前面的努力并没有白费
可以先提个权,不然读一些文件不方便,改一下/etc/ssh/sshd_config,把这两项原本的注释改掉改成启用状态:
1 | PermitRootLogin yes |
先来找docker数据存储目录
- data下有一个image,这是 Docker 的镜像管理目录
- 在这个目录下一直往下看到了sha256的json,这里存有以 sha256 digest 为文件名保存的镜像(一般docker都是在这里)
找到存储目录之后/mnt/realroot/data/image/overlay2/imagedb/content/sha256,在这里看任意一个json文件,发现有一坨东西输出出来,于是把他输出的格式扔给豆包,让豆包生成一个命令能迅速过滤我们想要的内容以及排序
1 | grep -ro '"created":"[^"]*"' . | cut -d'"' -f4 | sort -r | head |

答案
1 | 2026-04-16T07:15:50.535713491Z |
4、该服务器根分区快照路径为
前面fstab里面看到是btrfs的文件系统,执行命令:
1 | btrfs subvolume list /mnt/realroot |
发现没有安装btrfs工具,先安装一下apt install -y btrfs-progs

- @rootfs:这是你系统当前的活动根子卷(就是你正在用的系统)
- root/history:这就是你要找的根分区快照
1 | root/history |
5、该网站后台管理入口对应的文件名为
打开网站根目录,readme里面没有找到有用的东西,看到user.php,进去确认一下

注意,这里直接在终端cat中文会乱码,可以使用图形化界面来读取(也是派上用场了?!)

里面说admin.php是后台入口,并且说记得把admin.php改名,当前根目录没有admin.php,怀疑这就是改名后的文件,最终我们在aa下找到备份的admin.php,发现和user.php内容一样,确定user.php就是后台入口。
1 | user.php |
6、该网站设置的icp备案号为
在网站根目录下直接命令递归搜icp,-r表示递归搜索,-i表示不区分大小写
1 | grep -ri "icp" ./ |

1 | icp1919810 |
7、该网站设置的主域名为
一开始是想去nginx配置文件里面看反向代理配置,但是好像没发现域名?应该是没有配置,只好会到网站目录查找,看有RSS订阅,点进去看看,果然有域名www.2026fic.forensix,但是其实严格来说的话这个算是子域名,主域名也就是根域名应该是2026fic.forensix,一般情况下会把这两个其中一个重定向到另一个,让不管用户搜哪个都能找到网站,但是也有很多不使用根域名的情况,这里存疑,毕竟问的是网站配置的域名,就写www.2026fic.forensix吧。

1 | www.2026fic.forensix |
8、该网站分类3中,视频的拼音为
其实没有太读懂这题的意思,感觉上有可能是重构出网站之后会能很简单的看出。为什么会问拼音呢?一个视频的拼音应该存在哪里呢?这种应该是动态的东西,大概率是在数据库里?不清楚先去看看,先找一下数据库连接文件,找到是database.php,看看数据库密码连接

这题暂时先搁置,由于软件原因,加上博主的种种拖延,暂时没有继续复盘了
9、该站点设置页面中,被使用的前端模板来自于哪个源文件?
10、该网站的伪静态规则配置文件sm3值为
伪配置文件,应该就在我们刚刚看到的两个nginx配置文件中的一个nginx.conf,sites-available两个的其中一个,看看哪个是已经启用的(找不到命令记得安装,突然想起来)
1 | nginx -t |

nginx是正在用的,看了一眼刚好另一个文件名是default,应该就是他了,计算他的sm3值就行

1 | e73407468e6f52af54c7b14632eeeb9be25b05106d06c4c3085fc843c223793f |
11、该网站关联的数据库的ip地址为
网站下的数据库相关配置文件里面只写了mytidb

看看hosts文件里面的解析

1 | 10.0.3.100 |
12、该网站数据库使用了哪一类容器技术
查一下mytidb这个文件名,找到三个全是lxc下的,豆包查了一下lxc也是一个容器技术,那应该就是他了

1 | lxc |
13、运行在4000端口的备份数据库版本号为(残缺版,以后一定补上)
本来想看看当前4000端口是什么在监听,结果服务可能没启动,其实可以查一下4000端口是哪个服务比较常用,如果刚好是数据库服务那应该大差不差了

可以去启动起来

1 | v7.5.0 |
14、新注册用户数量最多的日期为
1 | 2026-04-15 |
15、马慧美最后一次登录该网站的ip为
1 | 51.43.21.163 |
16、以下哪个文件系统未被使用
17、该服务器安装了以下那些数据库服务
1 | 有三个都是前面见过的,一个是pg,一个是mysql,还有tidb |





