ctfshow-Misc入门 图片篇(50-56)
Posted z.volcano
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ctfshow-Misc入门 图片篇(50-56)相关的知识,希望对你有一定的参考价值。
八神出的misc入门系列
图片篇
图片篇(颜色通道)
misc50
考察Stegsolve
的使用
flag:ctfshow84470883ee1eec2e886436461bf79111
misc51
提示:你会数数吗。
背景颜色杂乱无章,各个通道看了也没有思路,后面八神师傅提示了一下大致方向,才顺利解出来
统计一下每种颜色像素点的个数,发现绝大多数颜色只出现过1-3次,而(64, 96, 128)
出现过282
次,(128, 96, 64)
出现过279
次
from PIL import Image
im=Image.open('misc51.png')
im = im.convert('RGB')
img = Image.new("RGB",(900,150))
dic =
for h in range(900):
for w in range(150):
s = im.getpixel((h,w))
dic[s] = dic.get(s,0)+1
lt = list(dic.items())
lt.sort(key = lambda x:x[-1])
print(lt)
思路清晰了,Image.new
新建一个黑色背景的图像,再遍历一次,如果坐标(x,y)
对应的颜色为上述两种其一,则把该坐标对应的像素点变成白色
from PIL import Image
im=Image.open('misc51.png')
im = im.convert('RGB')
img = Image.new("RGB",(900,150))
for h in range(900):
for w in range(150):
s = im.getpixel((h,w))
if s == (64, 96, 128) or s == (128, 96, 64):
img.putpixel([h, w], (255, 255, 255))
img.show()
misc52
提示:不会数数没关系,这次可以用眼睛瞪。
和上一题不一样的地方在于,在某些通道可以依稀看到flag
大概做法和misc51一样,但是不同的是,这题颜色的出现更有规律,每种颜色的出现次数在199-585
次
八神师傅非常贴心,这里只要选择出现次数最少的十种
即可,不需要猜或是爆破
from PIL import Image
im=Image.open('misc52.png')
im = im.convert('RGB')
img = Image.new("RGB",(900,150))
lt = [(130, 176, 116),(72, 217, 123),(146, 16, 141),(130, 241, 105),(251, 160, 136),(5, 129, 88),(167, 46, 187),(20, 65, 141),(96, 231, 225),(196, 144, 18)]
for h in range(900):
for w in range(150):
s = im.getpixel((h,w))
if s in lt:
img.putpixel([h, w], (255, 255, 255))
img.show()
misc53
提示:开始愉快的LSB部分。
关于LSB隐写的基本概念可以参考LSB隐写(最低有效位隐写)
在做题时,如果遇到图片是png
或bmp
格式,就有可能是LSB隐写
大多数情况下,可以用zsteg
一把梭
但是如果出题人稍加操作,就梭不出来了,所以还是得学会使用stegsolve
在R0
、B0
、G0
通道都发现lsb隐写痕迹
使用Analyse
中的data extract
,选上对应选项
misc54
提示:还是愉快的LSB部分。
这个题就没办法用zsteg一把梭,使用stegsolve
分析
在Alpha0
、B0
、G0
通道均发现lsb隐写痕迹,而且和misc53不同的是,这里是竖向排列的,即按列(column
)
勾选上对应选项
misc55
提示:怎么又是愉快的LSB部分。
R0、G0、B0通道均有隐写痕迹,但是提取不出有用信息。
注意到图片是上下翻转的,写脚本把图片翻转回来
from PIL import Image
img = Image.open('misc55.png')
img.transpose(Image.FLIP_TOP_BOTTOM).save('out.png')
接着可以正常提取出数据,解压拿flag
misc56
提示:怎么老是愉快的LSB部分。
R4、R2、R1、G4、G2、G1通道有隐写痕迹
misc60
提示:LSB之一零二四好人一生平安。
发现RGB Plane的0-4
通道都有隐写痕迹
而且题目已经说了Plane Order = RGB
,那么还需要确定通道的顺序,提示中的一零二四
指出这里的顺序是1-0-2-4
。
from PIL import Image
img = Image.open('misc60.png')
def f(img,axis):
p = img.convert('RGB').getpixel(axis)
out = ''
for i in p:
tmp = bin(i)[2:].zfill(8)
for j in [1,0,2,4]:
out += tmp[7-j]
return out
ans = ''
length = 28
for i in range(length):
ans += f(img,(i,0))
for i in range(len(ans)//8):
print(chr(int(ans[8*i:8*(i+1)],2)),end='')
以上是关于ctfshow-Misc入门 图片篇(50-56)的主要内容,如果未能解决你的问题,请参考以下文章