NKCTF 2024 1z_F0r3ns1c5 Writeup

NKCTF 2024 1z_F0r3ns1c5 Writeup

💡 原文中文,约5900字,阅读约需15分钟。
📝

内容提要

本文是关于NKCTF 2024 1z_F0r3ns1c5比赛的Writeup,介绍了三个取证点的解题思路,包括查找环境变量、导出进程和裁剪图片,最终得到的flag为nkctf{uuid}形式。

🔎

延伸解读

取证题型整体难度与参赛情况

文章提到,本次比赛取证题型三道题攻克率均不高,其中1z_F0r3ns1c5仅有2解。出题人原本计划设置三个flag,但考虑到一血礼品计算问题,最终合并为一个flag。这反映出取证类题目对选手的综合能力要求较高,可能涉及内存分析、进程导出、图像处理等多方面技能,导致解题率偏低。

内存取证中的环境变量与进程导出技巧

前两个flag的获取依赖于常规内存取证操作:通过Volatility的envars命令查找环境变量,发现键名n0wayback及其值,经XXencode解码得到部分flag;通过pslist发现mspaint进程,使用memdump导出内存,再用Gimp还原图像,调整偏移量后得到另一部分flag。这些步骤强调了熟悉Volatility工具和图像恢复基本操作的重要性。

第三个flag的复合解题思路与细节处理

第三个flag涉及多个步骤:通过consoles发现git clone的源码仓库,访问后需从Commits中获取源代码并用Docker部署;结合描述文件提示,找到Vscode使用的等宽字体Fira Code;利用Secret Generator生成马赛克图片,通过Python PIL裁剪字符图片并比对MD5,得到VeraCrypt容器密码。其中需注意后端代码对字符串的拼接处理,以及Windows下文件名大小写不敏感的问题。

❓

Q&A

NKCTF 2024 1z_F0r3ns1c5比赛的解题思路是什么?

比赛的解题思路包括三个取证点,前两个为常规取证点,最后一个稍微复杂。

如何通过环境变量获取第一个flag?

通过查找环境变量,找到键名为n0wayback的变量,解码后得到第一个flag。

第二个flag是如何获得的?

通过导出mspaint进程的内存并使用Gimp进行还原,最终得到第二个flag。

第三个flag的获取过程是什么?

访问git clone下载的源码,结合Docker进行部署,找到Vscode使用的等宽字体并生成字符图片,最终比对得到隐藏的VeraCrypt容器密码。

比赛中参赛选手对取证题型的攻克率如何?

参赛选手对取证题型的攻克率不高。

如何使用Python的PIL库裁剪字符图片?

通过Python的PIL库,指定每个字符的宽高进行裁剪,并保存到指定文件夹中。

🏷️

标签

➡️

继续阅读