misc 31
题目提示: 高度是正确的,但正确的宽度是多少呢。
下载附件图片,现在是看不到内容的
这里和 misc24 的原理一样,通过 bmp 图片像素计算图片的宽度。
还不会写脚本,直接算吧。
目前图片是 900*150=135000个像素大小。
每个像素点由3个字节(十六进制码6位)表示,每个字节负责控制一种颜色,分别为蓝(Blue)、绿(Green)、红(Red)
用 winhex 打开,看到共有 487253 个字节,文件头占 53个字节。
则正确的宽度应为 (487253-53) / 3 / 150 = 1082 (结果取整)
用010打开并且修改宽度
再次打开图片,得到flag
ctfshow{fb09dcc9005fe3feeefb73646b55efd5}
misc 32
看了大佬的python脚本,直接得到png图片的宽度和高度
点击查看代码
import zlib
import struct
#同时爆破宽度和高度
filename = "C:/Users/Goodric/Desktop/misc32.png"
with open(filename, 'rb') as f:
all_b = f.read()
data = bytearray(all_b[12:29])
n = 4095
for w in range(n):
width = bytearray(struct.pack('>i', w))
for h in range(n):
height = bytearray(struct.pack('>i', h))
for x in range(4):
data[x+4] = width[x]
data[x+8] = height[x]
crc32result = zlib.crc32(data)
#替换成图片的crc
if crc32result == 0xE14A4C0B:
print("宽为:", end = '')
print(width, end = ' ')
print(int.from_bytes(width, byteorder='big'))
print("高为:", end = '')
print(height, end = ' ')
print(int.from_bytes(height, byteorder='big'))
misc 42
用010打开,发现有许多IDAT板块,用TweakPNG打开,将长度截取下来,对应着ASCII码表去找就行了
ctfshow{078cbd0f9c8d3f2158e70529f8913c65}
misc 43
绕了一大圈,结果直接在010中就可以找到flag,注意观察右侧的粉色字体
ctfshow{6eb2589ffff5e390fe6b87504dbc0892}
misc 45
看来大佬的wp,将png格式转换为bmp格式,找在线工具,重命名中修改的不行,在binwalk中分离不出来
https://www.lddgo.net/convert/image-format
然后用binwalk分离就会得到一张图片,打开就是flag
ctfshow{057a722a5587979c34966c2436283e70}
misc 50
打开Stegsolve
ctfshow{84470883ee1eec2e886436461bf79111}
misc 53
打开Stegsolve
点save bin命名为1,再用记事本打开就有flag了
ctfshow{69830d5a3a3b5006f7b11193e9bc22a2}
misc 54
跟上一道题的操作一样
misc 55
图片是颠倒着的
这里的图片是反过来的 使用Stegsolve 发现通道存在隐写但是提取不了 所以 需要把图片发过来在进行操作 使用脚本:
点击查看代码
from PIL import Image
img = Image.open('misc55.png')
img.transpose(Image.FLIP_TOP_BOTTOM).save('out.png')