[随波逐流]CTF Flags

随波逐流信息安全网 www.1o1o.xyz

   [随波逐流]CTF Flags

软件版本:v1.0.0   数据版本: v20260526
返    回

[XMAN2018排位赛]file

 广告模块
ID: 17007
标题: [XMAN2018排位赛]file
描述: 磁盘镜像分析
类型: Misc
网站: None
题目链接: https://buuoj.cn/challenges#[XMAN2018%E6%8E%92%E4%BD%8D%E8%B5%9B]file
赛事: [XMAN2018排位赛]
年度: 2018
Flag值: flag{fugly_cats_need_luv_2}
writeup: 第一步:识别文件类型
attachment.img → 10MB (10,485,760 字节)
通过分析镜像文件的 魔数(Magic Bytes) :

- 偏移量 1080 处的两个字节是 53 ef (小端序为 0xef53 )
- 这是 EXT2/3/4 文件系统 的标志性特征
💡 知识点 :Linux EXT 文件系统在第 1080 字节处存储了超级块(Superblock),其中包含魔术字 0xEF53 用于标识文件系统类型。
### 第二步:提取文件系统内容
使用 7z (NanaZip) 可以直接读取 EXT 镜像
💡 知识点 :EXT 文件系统挂载点显示为 /tmp/forensics ,这暗示这是一道取证题。
### 第三步:尝试常规隐写方法
我依次检查了以下可能性:

1. EXIF 元数据 - 检查 JPEG 的 APP 段,未发现 flag
2. GIF 注释块 - 检查 GIF 的 Comment Extension,都是二进制数据
3. LSB 隐写 - 提取 GIF 帧的最低有效位,无可读字符串
4. 文件末尾附加数据 - 末尾都是 0 填充
### 第四步:全局字符串搜索
当常规方法都无效时, 对整个镜像进行字符串搜索 是取证题的通用技巧:
# 搜索所有长度 >= 10 的可打印 ASCII 字符串
for byte in data:
if 32 <= byte < 127: # 可打印ASCII范围
current += bytes([byte])
else:
if len(current) >= 10:
strings.append(current)
current = b''
搜索发现了关键线索 :Offset 0x8833ca: f l a g { f u g l y _ c a t s _ n e e d _ l u v _ 2 }
第五步:分析 Flag 隐藏方式
Flag 隐藏在镜像的 未分配空间/元数据区域 :位置:0x8833ca (约 8.9MB 处)
格式:每个字符之间用空格分隔
原始:f l a g { f u g l y _ c a t s _ n e e d _ l u v _ 2 }
去除空格:flag{fugly_cats_need_luv_2}
答案错误,我要更正