翻bugku的时候看到了这道题,百思不得其解。属于流隐写的题,包含了一些隐写的基本技能,很不错的一道题。感谢冰皇师傅的指点迷津。
### 第一部分:
首先拿到题放进winhex里分析为png文件,文件名加后缀png,得到一张猫的图片:
仔细分析了一下winhex结果,没有隐藏什么特殊的文件。扔进binwalk分析了一波也没效果。怀疑是藏在色道里。用stegsolve查看了各个色道没有收获。。。一脸懵逼。
在冰皇师傅指导下才知道是LSB隐写:
保存为bin文件,用winhex打开:
删去前面的两个乱码,得到一张png图片,增加文件名后缀后打开,得到半张二维码:
查看其属性:
修改其高度也为280像素:
得到一张二维码:
用stegsolve反色后扫一下得一个百度云地址,下载下来一个rar包。
第二部分:
打开后里面有个flag.txt,激动地点开,emmmmmmm。提示不在这里,还没完。。。扔到winhex里分析:可以看到有两个文件:flag.txt(就是那个假的)和flag.pyc。
但是一直不知道怎么搞出来.pyc文件。
注意到winhex里的一个提示STM:flag.pyc。在网上查得需要使用一个工具来分析:ntfsstreamseditor。得知该部分属于流隐写。这里放上两个博文以供学习参考:1、2。
必须用winRAR解压(其他解压软件好像没有什么效果...),会提示:
解压到一个文件夹里,放进ntfsstreamseditor分析:
将pyc文件导出,并在网上在线pyc反编译工具里反编译一下,得代码:
1 | #!/usr/bin/env python |
emmmmmm咋成密码题了。。。写一个简单的解密脚本: 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16# coding:utf-8
def decode():
a = ['96', '65', '93', '123', '91', '97', '22', '93', '70', '102', '94', '132', '46', '112', '64', '97', '88', '80', '82', '137', '90', '109', '99', '112']
flag=''
a.reverse()
for i in range(len(a)):
if i % 2 == 0:
s = int(a[i]) - 10
else:
s = int(a[i]) + 10
s = chr(i^s)
flag += s
print(flag)
decode()flag{Y@e_Cl3veR_C1Ever!}
小结:这个题目包含了一定量的知识点,比如LSB隐写知识、改图片大小操作、反色操作、文件流隐写知识、脚本编写能力等。收获很多哈哈哈,再次感谢冰皇师傅(手动滑稽)。