这道题的flag由三部分组成
第一部分很明显,使用010将文件打开,在最后一行可以看到有一串base64编码的字符串
将这串base64编码解码可得第一段flag
我们将图片放大缩小,不难发现图片的显示存在异常,我们猜测存在LSB隐写
放入到Stegsolve工具中查看,在Alpha通道中发现图片左上角又细微的变化
发现了第二段flag
同时这里也放上一个LSB处理脚本
from PIL import Image
img = Image.open('flag.png')
width, height = img.size
flag1 = ''
for y in range(0,height,3):
for x in range(0,width,2):
pixel = img.getpixel((x, y))
print(pixel)
flag1 += chr(pixel[3])
print(flag1[:23])
我们将flag.png放到TweakPNG中分析,发现最后一个IDAT存在问题,像是多余出来的(上一个IDAT并没有被填满)
于是我们将这个多余的IDAT提取出来,添上合适的文件头尾,也可以将前面的IDAT全都删掉
我们可以直接爆破高宽,不过发现并没有结果,这里我们要将color_type改成truecolor
这时我们使用宽高一把梭工具一键爆破在宽500高500时发现了最后一段flag
最后得到flag:DASCTF{2fd9e9ff-e27d-5405-c5f5-a19131f86216}