蓝鲸安全CTF打卡题——第一期隐写术

i春秋:蓝鲸安全CTF打卡题——第一期隐写术

再过几天就是中秋节了,我打算尽自己最大的能力把蓝鲸安全平台上面的打卡题目的writeup整理出来。

有什么错误的地方 希望各位大佬指正(谢谢Orz)

蓝鲸安全CTF打卡题——第一期隐写术

一:雨中龙猫

蓝鲸安全CTF打卡题——第一期隐写术

知识点

图片源码隐写、base64编码

解题思路

使用普通的记事本打卡图片就可以了,这一题感觉有点坑(MISC不按常规套路出牌),使用常规的方法没有想出来,后来看了塔主的解题视频(5分钟的) 里面说了一下关于base64的内容,所以想到了方法(HHHH)

由于题目中提示有答案的格式,所以先对whalectf进行base64加密(base64加解密平台)

蓝鲸安全CTF打卡题——第一期隐写术

在记事本中搜索内容d2hhbGVjd(一次一次的尝试,每一次尝试就减少几个字符)

蓝鲸安全CTF打卡题——第一期隐写术

我们能够看到最后提供的提示是:py,同样的操作,我们进行base64操作

蓝鲸安全CTF打卡题——第一期隐写术

我们继续刚刚的操作就会得到

蓝鲸安全CTF打卡题——第一期隐写术

合并两次得到的结果就会得到:d2hhbGVjdGZ7TG9uZ19tYW9faXNfaGFwcHl9

base64解密之后得到:

蓝鲸安全CTF打卡题——第一期隐写术

最后得到答案:whalectf{Long_mao_is_happy}

二:追加数据

蓝鲸安全CTF打卡题——第一期隐写术

知识点

文件绑定、word隐藏

文件绑定的方法

在cmd中

copy /b 1.jpg+2.txt 3.jpg 解题思路

拿到图片,在kali里面使用binwalk工具进行分析

使用命令:

binwalk whalediary.jpg

蓝鲸安全CTF打卡题——第一期隐写术

可以看到一个zip压缩包隐藏在里面,使用foremost命令

使用命令:foremost whalediary.jpg

蓝鲸安全CTF打卡题——第一期隐写术

使用word,打开docx文件就会得到(由于我事先把word中的隐藏关闭了,所以打开的文档可能和没有关闭的人的不同)

蓝鲸安全CTF打卡题——第一期隐写术

我们只需要注意每一段后面的字母就好,把他们组合起来就是答案(可是我没有读懂QAQ)

三:追加数据

蓝鲸安全CTF打卡题——第一期隐写术

知识点

PNG文件格式、zlib压缩数据、二维码识别

解题思路

首先使用pngcheck工具检查图片的IDAT位

使用的命令为:pngcheck.exe -v whalectf.png

蓝鲸安全CTF打卡题——第一期隐写术

可以看到一个IDAT位为0x17345,长度为193 用winhex打开图片,找到IDTA块对应的位置 如图所示截取:

蓝鲸安全CTF打卡题——第一期隐写术

这里不需要截取长度标志位C1和IDAT图像数据块和最后四位的CRC冗余校验码,使用如下脚本进行分析即可:

# python2 #! /usr/bin/env python import zlib import binascii IDAT='789CA552B911C3300C5B09D87FB99C65E2A11A17915328FC8487C0C7E17BCEF57CCFAFA27CAB749B8A8E3E754C4C15EF25F934CDFF9DD7C0D413EB7D9E18D16F15D2EB0B2BF1D44C6AE6CAB1664F11933436A9D0D8AA6B5A2D09BA785E58EC8AB264111C0330A148170B90DA0E582CF388073676D2022C50CA86B63175A3FD26AE1ECDF2C658D148E0391591C9916A795432FBDDF27F6D2B71476C6C361C052FAA846A91B22C76A25878681B7EA904A950E28887562FDBC59AF6DFF901E0DBC1AB'.decode('hex') result = binascii.hexlify(zlib.decompress(IDAT)) bin = result.decode('hex') print bin print '\r\n' print len(bin)

就会得到如下所示:

蓝鲸安全CTF打卡题——第一期隐写术

一串0和1的数据 长度为1024是一个正方形 可以想到是要生成一个二维码,把生成的0和1放在result.txt里面,用如下脚本生成二维码

# python2 #! /usr/bin/env python import Image MAX = 32 pic = Image.new('RGB',(MAX*9,MAX*9)) f = open('result.txt','r') str = f.read() i = 0 for y in range(0,MAX*9,9): for x in range(0,MAX*9,9): if(str[i] == '1'): for n in range(9): for j in range(9): pic.putpixel([x+j,y+n],(0,0,0)) else: for k in range(9): for l in range(9): pic.putpixel([x+l,y+k],(255,255,255)) i = i+1 pic.show() pic.save("flag.png") f.close()

得到二维码:

蓝鲸安全CTF打卡题——第一期隐写术

使用QR_Research或者其它工具也是可以的,扫描后就出现flag

蓝鲸安全CTF打卡题——第一期隐写术

最后得到答案:whale{QR_code_and_png}

四:破碎的心

蓝鲸安全CTF打卡题——第一期隐写术

知识点

条形码

解题思路

我们把图片下载下来之后会发现这是一个不完整的条形码

蓝鲸安全CTF打卡题——第一期隐写术

我们选择其中的条形码还原即可 在画图里,先用矩形框选择一些连续的条纹,按住ctrl,按上下键不断还原即可

蓝鲸安全CTF打卡题——第一期隐写术

最后用BcTester打开即可得到flag

蓝鲸安全CTF打卡题——第一期隐写术

最后得到答案:whale{BarC0d3_Pick}

五:我们不一样

蓝鲸安全CTF打卡题——第一期隐写术

知识点

双图对比 compare命令的使用

解题思路

首先使用Linux中的binwalk命令

蓝鲸安全CTF打卡题——第一期隐写术

我们可以看到有两张图 使用compare命令

蓝鲸安全CTF打卡题——第一期隐写术

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwjdjp.html