buuctf(misc):喵喵喵
喵喵喵
下载附件后,发现是一张猫的图片,日常先用16进制编辑器去瞧瞧有啥线索......,然而并没有,那应该就不需要用工具去分离图片了,不放心的话也可以去试试。 然后再用工具stegslove打开,瞧瞧有啥线索。果然有秘密。在rgb的0通道里可以发现一丝不正常
应该就是LSB隐写了,打开Data Extract模式查看,并提取。
另存为1.png,发现并不能打开,继续16进制编辑器打开,发现文件头前一部分还有一些数字删去即可。png的文件头是89504e47
保存后发现是一个只有上半部分的二维码,首先想到的是修改图片的高度,看是否能否得到下半部分
图片宽和高不一样,将高度修改为和宽一样,然后保存就得到了二维码。
准备去扫,却发现颜色被 置反了(用 stegsolve异或一下),扫二维码。不过好像现在的软件已经很给力了,在线扫或者手机扫,都可以扫出来.
给了一个网址https://pan.baidu.com/s/1pLT2J4f,从网盘下载flag.rar。以为终于结束了,但是事实并没有那么简单。。。。。。
太过分了吧,然后就没有然后了。到了这一步已经不会了,去看看大佬的writeup
果然我还是菜鸟,这里涉及了NTFS文件隐写,相关知识可以查看大佬博客https://blog.csdn.net/qq_41079177/article/details/102964134。利用利用NtfsStreamsEditor软件去提取隐藏文件。(这一步我一直提取失败,没搞懂为什么,后来发现下载的压缩包用WinRAR解压才可以提取到隐藏的文件,据大佬说流隐写得用WinRAR解压)
好不容易找到了隐藏的pyc文件利用Pyc反编译
在线网站进行反编译:https://tool.lu/pyc/
反编译出加密脚本
#!/usr/bin/env python
# visit https://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']
写一个解密脚本,获得flag
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']
ciphertext = ciphertext[::-1]
flag = ''
for i in range(len(ciphertext)):
if (i % 2 == 0):
a = int(ciphertext[i]) - 10
else:
a = int(ciphertext[i]) + 10
a = i ^ a
flag = flag + chr(a)
print(flag)