misc37
flag在图片里
打开发现37是个gif,动的很快,第一感觉是用手机录像,然后放慢观看哈哈哈哈(我真的试了下)。试了一下,确实可以得到flag。也可以用stegsolve,使用Frame Browser
Frame Browser:帧浏览器,主要是对GIF之类的动图进行分解,动图变成一张张图片,便于查看
帧浏览器直接往后点,可以得到flag。
分析一下stegsolve的功能
- file format:文件格式,有的时候flag也可能在这里。
- data extract:数据提取,lsb隐写可以用到,遇到Red plane 0、Green plane 0、Blue plane 0,它们为0时是空白或黑色或与其它页面有很大不同,就要注意了,很有可能存在lsb隐写,一般拉到0,preview即可。
- stereogram solver:立体图解算器,这个功能可以从不同通道去分析图片
- Frame Browser:帧浏览器,主要是对GIF之类的动图进行分解,动图变成一张张图片,便于查看
- image combiner:图像组合器,一般用于图像组合,默认的XOR即可看到flag。
misc38
flag在图片里
解压是个png图片,使用bless看看没发现什么异常,这里分享一下apng
apng:APNG是一个基于PNG的位图动画格式,扩展方法类似主要用于网页的GIF 89a,仍对传统PNG保留向下兼容。第1帧是标准的单幅PNG图像,因此只支持原版PNG的软件能正常显示第1帧。
我们使用火狐打开图片,发现可以动。这是我们再使用stegsolve的frame browser就没有用了,因为这个apng只是显示第一帧,这时我们就需要一个可以分解apng文件的工具了:APNG Disassembler
使用APNG Disassembler,选择图片进行分解。
发现flag片段。
misc39
flag就像水,忽快忽慢地流
图片是一个gif,使用bless看没发现什么错误,根据题目“忽快忽慢的流”,这应该是理解忽快忽慢,尝试帧间隔隐写。这里我们需要用到工具imagemagick。
首先下载工具
sudo apt-get install imagemagick
使用的命令:identify -format "%T " misc39.gif > 1.txt
identify [options] input-file
identify:命令名称
options:参数
input-file:文件名
得到一个只有36 和37的文本,可以将36转化成0 ,37转化成1,这里使用文本的查找并替换就可。
发现共有287个1和0,使用脚本,将每7位转换成字符
s="11000111110100110011011100111101000110111111101111111011011010101100100111000011000101100101100110110011001110010111001011010111001101100010011011111000101100101011001001101100111000110010001110010110110011001111000010111001110010111000101100011110000101100000110100011010101110011111101"
flag=""
for i in range(41):
flag += chr(int(s[7*i:7*(i+1)],2))
print(flag)
得到flag
ctfshow{52812ff995fb7be268d963a9ebca0459}
misc40
flag就像歌,有长有短仿佛岁月悠悠
放到浏览器中居然会动,跟38题相同都是apng,还是使用我们的apng Disassembler。
分解完之后,点完所有的图片,也没找到flag片段,发现每个图片对应一个文本,文本delay=后面有一个数字,我们尝试将它提取出来,可以发现从第28张开始就是flag了。
这里附上别人提取数字的方法。
这个从25开始是因为按照十进制转换字符,前27个超出范围
flag=""
for i in range(28,69):
f = open("apngframe" + str(i) + ".txt")
s = f.read()
flag += chr(int(s.split("/")[0][6:]))
print(flag)
得到flag
ctfshow{95ca0297dff0f6b1bdaca394a6fcb95b}