蓝鲸CTF——隐写术

Posted lxz-1263030049

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了蓝鲸CTF——隐写术相关的知识,希望对你有一定的参考价值。

这一次我主要是打算把蓝鲸CTF里面的有关于隐写术的题目进行一下整合,让各位能够更好的查看

如有错误,希望各位大佬指点,谢谢!!!

 

1:Find

50

 

Find the hidden information (we call it flag) in the image.

HCTF 2014 Quals

技术分享图片

解题思路:这一题难度易:

首先:下载这个图片:http://whalectf.xin/files/fc2d7e2789534ba2bdeb2bbd918990a7/stego_final.png

技术分享图片

然后使用神器:Stegsolve(这个工具如果你们没有可以加我为好友,我会分享给你们的)

技术分享图片

把这张照片保存就可以了(你们有没有发现这个二维码,和我们见过的不同)

使用光影魔术手这个软件,把这个照片进行反光处理就可以了

技术分享图片

使用微信上面的扫一扫就会得到:

技术分享图片

最后得到答案: flag{hctf_3xF$235#x5e3} 

 

2:Find

被蓝鲸吞噬的flag

 
 
技术分享图片

解题思路:难易程度易:

首先使用binwalk就会发现这个图片里面隐藏的有文件

技术分享图片

然后使用binwalk xx.png -e 命令进行分离就可以得到隐藏的文件

技术分享图片

 

打开文件就会得到:
技术分享图片

最后答案:flag{WelcomeT3WhaleCTF}

 

3:合体鲸鱼

50

 

你能找到我不同的一面吗?

 

技术分享图片

解题思路:难易程度易:

首先:这一题的思路很简单,使用binwalk就可以得到很多信息:

技术分享图片

 

就会看到有隐藏的信息

然后使用foremsot xx.jpg  就会得到隐藏的文件:

技术分享图片

 

技术分享图片

 

 打开就会得到:

 

技术分享图片

最后得到答案:flag{youfindmeWHALE}

4:亚种

50

 

 

 

这是什么种类的蓝鲸呢?

 

 

 

技术分享图片

 

 

解题思路:难易程度:易

 

首先使用binwalk查看,然而都是看不懂的信息:

 

 

 

技术分享图片

 

傻傻的我以为划红线的是答案所在地

 

点击进去都是代码看不懂

 

换一种方法都是我们常用的哦!!!
下面使用hex打开就可以得到答案:

 

技术分享图片

 

最后得到答案:flag{firsttry}

5:愤怒的小猪

100

 

 

 

经过不断的挫折,小猪们吸取教训把宝藏藏起来了,你能找到吗?

 

 

 

 

解题思路:难易程度易:

技术分享图片

首先·:看见这个图片要能够想到是三原色就可以很快得到答案:

 

使用stegsolve就可以得到答案:

 

技术分享图片

 

扫描上面的二维码就可以得到答案:

 

技术分享图片

 

最后得到答案:flag{AppLeU0}

 

6:下雨天

50

 

下雨天了,你总是在我心中一闪而过

 
技术分享图片

解题思路:难易程度易:

这一题我还是请教大佬之后写出来的,而我之所以写成易

是因为它真的很简单,

是我想太多了,当时没有写出来

这一题是需要使用Stegolove就可以做出来了

技术分享图片

最后得到答案:GUETCTF{Y0u_sEE_m3}

 

下面是我错误的步骤,写出来是为了能够告诫自己

开始的时候看见是图片

直接想到使用binwalk就会得到答案

是的这一题分离出来一张图片

然而这个图片并没有什么有用的信息

接着使用 winhex就会发现文件头不对

更改一下文件头发现图片打不开了

(QAQ)

经历了那么多,最后发现那么简单,我只是感觉自己很笨呀(QAQ)

 

7:这是什么

100

 

兔子的脚下踩到了什么?

 
 
技术分享图片

解题思路:难易程度易:

这一题比较简单,使用winhex就可以得到最后的答案

(为什么那么简单的题目我要想的那么复杂,导致现在开始怀疑自己QAQ)

根据题目的描述就能够想到最后的结果所在地(拉到最后的地方就会得到)

技术分享图片

这个是ASCII码,使用ASCII码表对照一下就会得到最后的答案:

技术分享图片

最后得到答案:flag{pE3kQzmaMN}

8:真是动图

100

 

 

 

真的是动图,相信我啊,我就把password藏里面了
答案格式key{xxx}

 

 

 

 

 

 

 

技术分享图片

解题思路:难易程度:中等(之所以评为中等,并不是因为这一题难,而是因为不容易读

 

至少我是这样认为的QAQ)

 

首先:需要下载图片,使用百度云,360浏览器,以及所有可以使用链接下载的工具都可以了:

 

技术分享图片

 

然后:就会发现图片打开出错

 

放进winhex中看一下就会发现,文件头缺失

 

技术分享图片

 

加上GIF8就会保存之后就会得到:

 

技术分享图片

 

这是一个动图:使用steglove打开发现,看的不清楚,使用2345看图王吧
毕竟这个可以一帧一帧的看

 

技术分享图片

 

把灰色的部分读取就会得到base64编码的东西:

 

使用在线工具:

 

技术分享图片

 

就会得到最后的答案:

 

key{catch_the_dynamic_flag_is_quite_simple}

 

9:错误压缩

150

 

把我的女神压缩就忍了,竟然还压缩错了!
答案格式:SCTF{xxx}

 
 

技术分享图片

解题思路:总的来说这一题,还是比较难的,可能是自己会的太少,所以这样感觉的

不过这一题还是会学习到许多新的知识的(HHH)。

 

首先:我们会使用 binwalk  看一下有没有隐藏的文件或者压缩包(但是都没有QAQ)
使用stegolve 也没有任何信息(QAQ)

然后:上网搜一下看看有没有大佬写过这个题目的wp(HHH很聪明呀!!没有什么都没有QAQ)

自己解决吧(自己又上网搜一些关于图片隐写的解题思路,发现pngcheck没有使用过)

 

使用一一下吧(但是没有工具,自己又蒙蒙的上网找工具(http://www.libpng.org/pub/png/apps/pngcheck.html)

这个工具的使用方法比较简单(具体使用方法,我会在下面解题思路中详细写出来的)

使用cmd(这个cmd今天不知道怎么了就是进不了文件夹里面的内容了,找到一位大佬用另一种方法进入的(QAQ))

我们需要把图片和pngcheck放在同一个文件夹里面

技术分享图片

然后使用cmd:

技术分享图片

 可以看到,正常的块的length是在65524的时候就满了,而倒数第二个IDAT块长度是45027,

 最后一个长度是138,很明显最后一个IDAT块是有问题的,因为他本来应该并入到倒数第二个未满的块里

 看到下面的数据和上面的不同,关键点就是在这个地方

 使用winhex找到(如下图所示的红线的位置)

技术分享图片

查找78 9C文件头标志,这个地方需要使用python进行处理就会得到:

技术分享图片
import zlib
import binascii
IDAT =("789C5D91011280400802BF04FFFF5C75294B5537738A21A27D1E49CFD17D
B3937A92E7E603880A6D485100901FB0410153350DE83112EA2D51C54CE2E585B15A
2FC78E8872F51C6FC1881882F93D372DEF78E665B0C36C529622A0A45588138833A1
70A2071DDCD18219DB8C0D465D8B6989719645ED9C11C36AE3ABDAEFCFC0ACF023E77
C17C7897667").decode("hex") result = binascii.hexlify(zlib.decompress(IDAT)) print result
技术分享图片

就会得到:

技术分享图片

使用conventer进行hex转化就会得到:

技术分享图片

 

 如果ctf做的比较多就会发现,关于0101:

(1)有可能代表的是ASCII码

(2)有可能是二维码:0表示的是黑色,1表示的是白色

关于这个里面的0101,一共有625个,正好是25的平方

借鉴一段代码:

技术分享图片
import Image
MAX = 25
pic = Image.new("RGB",(MAX,MAX))
str = "11111110001000011011111111000001011100101101000001101110101000000000101110110
111010010000000010111011011101011101101001011101100000101010110110100000111111110101
010101011111110000000010111011100000000110100110000010100111011011110101010010000111
000000000001010000000010010011010001001110011110111001111000011101111100011001010001
100111000010101000110100011110101100000101000101100000110111011001000011100111001000
010111111101000000001101010010001111011111110111000011010110111000001000011001100011
110101110100011010011111000010111010110001110100111001011101001001110110110001100000
10110001101000110001111111011010110111011011" i=0 for y in range (0,MAX): for x in range (0,MAX): if(str[i] == 1): pic.putpixel([x,y],(0,0,0)) else: pic.putpixel([x,y],(255,255,255)) i = i+1 pic.show() pic.save("flag.png")
技术分享图片

这个需要安装Image库

运行之后就会得到:

技术分享图片

使用手机或者在线工具都可以,但是我使用的是QR Research

就会得到答案:

 

技术分享图片

 

注意flag的格式,以及需要看清0和o的区别,1和I的不同

 

10:模糊的图片

100

 

p图大神请帮我把模糊的图片弄清楚,答案格式:flag{xxxx}

 
 
技术分享图片

解题思路:关于这一题有两种解题思路
但是总的来说是一种都是使用一个思想锐化的思维

可能是我太弱了

导致这一题并没有得到最后的答案

 首先:看到题目
”p图大神请帮我把模糊的图片弄清楚“
这一句已经很清楚的知道需要使用ps以及其它图片处理工具进行锐化处理

这个地方可以使用图片处理工具有:美图秀秀,ps,光影魔术手
(我比较推荐使用光影魔术手,没有广告)
几个常规的处理技巧

技术分享图片

经过处理之后就会得到:

技术分享图片

或者使用python:

技术分享图片
#coding:utf-8

import Image

img = Image.open(ifs.bmp)

X = img.size[0]
Y = img.size[1]

print X,Y

for i in range(X-2):
  for j in range(Y-2):
    a = img.getpixel((i,j))[0]+img.getpixel((i,j))[1]+img.getpixel((i,j))[2]
    b = img.getpixel((i,j+1))[0]+img.getpixel((i,j+1))[1]+img.getpixel((i,j+1))[2]
    c = img.getpixel((i,j+2))[0]+img.getpixel((i,j+2))[1]+img.getpixel((i,j+2))[2]
    if (a > b and c > b) or (a < b and c < b):
      pass
    else:
      img.putpixel((i,j),(255,255,255))

img.show()
技术分享图片

技术分享图片

看图得key: At10ISCC421ZLAPL

 

11:IHDR

100

 

苹果拍照很美,但是我要拍的东西怎么老是拍不出来

 
 
技术分享图片

解题思路:难易程度易:

直接使用winhex就可以得到答案:
首先:使用winhex打开找到IHDR位置就可以了:

然后知道更改高度就是划红线的地方:

技术分享图片

 保存之后就会得到最后的答案:FLAG{ihDR_ALSO_FUN}

 

12:斗鸡眼

200

 

听说斗鸡眼就能找到答案了
答案格式:ISG{xxxx}

 
 
技术分享图片

解题思路:难易程度难:

首先这一题虽然是实验吧的原题,但是当时的我并没有做出来,这个是我的问题(毕竟哪个时候能力不够呀)

虽然今天写出来了解题思路,但是还是参考一些大佬写的思路,自己做的总结(太弱了,是我现在的问题)

首先:关于这一题使用binwalk

 技术分享图片

以及foremost就会得到一个新的文件,是两个看起来相同的照片,然而并没有那么简单的哦!!

 

 

技术分享图片

技术分享图片

是的这是两张不同的图片,用Beyond Compare 在二进制下看一眼,文件的最末尾果然不同

技术分享图片

竟然看出了什么∑(っ °Д °;)っ  这一条红线是啥玩意?(?(?)?)

 

技术分享图片

使用winhex查看一下,看看里面有没有藏什么东西( ̄. ̄),小样你躲不过我专职酱油选手的,

然而,并没有发现什么重要的信息(QAQ)

但是,难不倒本宝宝的,我还有神器steglove工具进行合并:

技术分享图片

合并一下并且保存:默认solved.bmp

技术分享图片

使用winhex进行查看就会得到:

技术分享图片

记住千万不要使用进度条乱拉,这样会错过重要的信息:

技术分享图片

就在这里,拉进度条的小伙伴你是看不到的
咳咳,这里其实很难进行下一步,因为不知道要干嘛了,把这一块抠出来,然后各种编码转换
然并卵o( ̄ヘ ̄*o)
后来我发现了,这估计就是一个偏移的提示
Tips:把start.png和to.png保存为bmp格式,因为png存储的问题,不太好找偏移
然后瞎折腾啊!!!!!!
终于发现在to.bmp的对应偏移里找到了些东西

技术分享图片

就是这些乱七八糟的
把这些抠出来,仔细观察一下,看!
(?(?)?):看什么?
有没有发现这是RGB(Σ( ° △ °|||)︴,这个写writeup一定是个弱智算了我们不看了)
在R的位置上呈现的是二进制

技术分享图片

所以接下来就是把R位置上的数字挑出来,虽然没多少但是这种重复的工作就交给代码吧

技术分享图片

然后处理完就是这样的

技术分享图片

其实最开始我是保留所有的,也就是00 直接保留00,01直接保留01,但是后来解码发现有错误,然后就把00改为0,01改为1
从小书包掏出stegsolve的好朋友JPocketKnife
两部曲:先binary format 

技术分享图片

 

然后to ascii

技术分享图片

 

然后就没了,真的没了还看啥?


技术分享图片

 

这一题参考了两个大佬的解题思路,总结了一下,写出的博文

如果有什么错误的地方请你们指正,谢谢

 

 

 


 


以上是关于蓝鲸CTF——隐写术的主要内容,如果未能解决你的问题,请参考以下文章

CTF---隐写术入门第二题 小苹果

CTF入门——隐写术 浅谈(? ?_?)?

实验吧CTF题库-隐写术

CTF---隐写术入门第一题 SB!SB!SB!

CTF实战(隐写术):欢迎来到地狱

CTF入门 | “男神”背后的隐写术