f10@t's blog

Bugku的一道misc-----猫片

字数统计: 763阅读时长: 3 min
2018/08/08

翻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。得知该部分属于流隐写。 这里放上两个博文以供学习参考:12. 必须用winRAR解压(其他解压软件好像没有什么效果...),会提示: 解压到一个文件夹里,放进ntfsstreamseditor分析: 将pyc文件导出,并在网上在线pyc反编译工具里反编译一下,得代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#!/usr/bin/env python
# visit http://tool.lu/pyc/ for more information
import base64

def encode():
flag = '*************'
ciphertext = []
for i in range(len(flag)):
s = chr(i ^ ord(flag[i]))
if i % 2 == 0:
s = ord(s) + 10
else:
s = ord(s) - 10
ciphertext.append(str(s))

return ciphertext[::-1]

ciphertext = [
'96',
'65',
'93',
'123',
'91',
'97',
'22',
'93',
'70',
'102',
'94',
'132',
'46',
'112',
'64',
'97',
'88',
'80',
'82',
'137',
'90',
'109',
'99',
'112']
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:flag{Y@e_Cl3veR_C1Ever!}

小结:这个题目包含了一定量的知识点,比如LSB隐写知识、改图片大小操作、反色操作、文件流隐写知识、脚本编写能力等。收获很多哈哈哈,再次感谢冰皇师傅(手动滑稽)。

CATALOG
  1. 1. 第二部分: