错误压缩——蓝鲸安全

刚刚做了蓝鲸安全的题目,现在整理一下

写出解题思路,希望能够帮助到那些需要帮助的人

所有的wp都是以一题一篇的形式写出

主要是为了能够让读者更好的阅读以及查找

希望你们不要责怪!!共勉!!!

永远爱你们的————新宝宝

 

错误压缩

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

就会得到答案:

如果有什么不明白的地方,留言或者加我!!! 
我很菜,所以我会努力的! 
努力是因为不想让在乎的人失望! 
博主整理不易,如果喜欢推荐关注一下博主哦!

博主喜欢广交好友下面是我的联系方式: 
QQ:1263030049 

微信:liu1263030049
加好友前请注明原因谢谢

猜你喜欢

转载自www.cnblogs.com/lxz-1263030049/p/9276751.html
今日推荐