1. 提取隐藏信息
一个 vmdk 文件,看了一下里面是 NTFS 格式,可以用 RecuperaBit 来分析
分析命令如下:
python2 main.py ctf-flat.vmdk
[ENTER]
recoverable
tree 0
...
可以看到有 flag0.txt / flag1.txt / flag2.txt / flag3.txt 4个文件,里面都写着 flag is not here.
另外还能看到,这四个文件有 ads 流,所以隐藏数据应该在这里
用下面的命令逐个导出:
restore 0 33:ads
restore 0 34:ads
restore 0 35:ads
restore 0 36:ads
在默认输出 recuperabit_output 文件夹里可以看到,四个已经导出的 ads 流文件
2.合并文件
提取的文件保存在recuperabit_output/Partition0/Root相对目录下
里面有四个文件
cat flag0.txt:ads flag1.txt:ads flag2.txt:ads flag3.txt:ads|>1
得到一个01组成的16进制组成
4 个文件里都是 1 和 0 组成的二进制字符,将 4 个文件里的内容顺序拼接,然后二进制转换成字符串,就能得到 flag 了
3. 二进制转String
xxd -p 1
将这些二进制转为字符串,我使用python实现
Python代码:
binStr = b'0110011001101100011000010110011101111011001101000100010001010011010111110011000101101110010111110100010000110001011100110110101101111101'
def ToStr(binStr):
i=0
while i<len(binStr):
b = chr(int(binStr[i:i+8],2))
print(b,end='')
i+=8
ToStr(binStr)
得到Flag: flag{4DS_1n_D1sk}