ctfshow学习记录-misc入门(图片篇-颜色通道50-56)

misc51-52的wp和脚本参考的是csdn博主:z.volcano

九某人的碎碎念:这篇一更,说明近期是真的没有时间写wp了。虽说好多都是之前做过的题,但是wp整理起来还是比较耗时的。近几个月事特别多,年底前基本没什么时间了,等不太忙了我再继续更新~
 
22.11.10留
       misc57-61去掉了,还不知道为啥,所以57-59的wp暂时我就去掉了,如果再出的话我就重新更一下,不出的话我就不更了。
       不过原来的学习链接我附到这里,有兴趣的师傅们可以继续学习:java lsb隐写_LSB隐写工具对比(Stegsolve与zsteg)@非专业de人士
       原来的57-59就是stegsolve和zsteg的工具对比,了解工具的使用区别其实就能做出来了,不算难,就是可惜61还没做出来就木有了~


misc50

提示:有时候视线也要放低一点
解答:用stegsolve看一下,翻看几页就能获取flag。
在这里插入图片描述在这里插入图片描述在这里插入图片描述

ctfshow{84470883ee1eec2e886436461bf79111}


misc51

提示:你会数数吗。
解答
用脚本计算每个像素点出现的数量,并按出现数量的大小顺序排序。

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)
#((128, 96, 64), 279), ((64, 96, 128), 282)

将出现频次较多的是(128, 96, 64)出现279次,(64, 96, 128)出现282次。将这两个像素的位置换成白的。

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()

在这里插入图片描述

ctfshow{51fcc6228d768a3acab1d05572e52133}

我运行的时候出现了问题,记录一下:
如果程序提示DLL load failed while importing _imaging: 找不到指定的模块。那就是python和pillow版本不匹配,可以卸载重安装一下pillow。
pillow网址:https://pillow.readthedocs.io/en/latest/installation.html
在这里插入图片描述

比如我是python3.8,可以选择pillow6.2.1及以上的

pip uninstall pillow
pip install pillow==6.2.1 -i https://pypi.tuna.tsinghua.edu.cn/simple/

misc52

提示:不会数数没关系,这次可以用眼睛瞪。
解答:类似上道题也要计算像素数量。提示说可以用眼瞪,stegsolve查看有一些通道确实可以模糊看到有信息。

(misc52的预期,因为是索引颜色,所以一共只有不超过255种颜色像素点。写个脚本输出每种索引色像素点的排列,会发现大部分都随机排布在整个图像里,但有十种颜色的排布仅出现在特定区域,那么这十种颜色的像素点必然携带了某种信息,把它们提取出来就行。)
在这里插入图片描述

z.volcano师傅的wp里说选择出现次数最少的十种即可获取flag。(emmm所以我才对misc题比较头疼,总会出现一些没有见过的思路)

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()

在这里插入图片描述

ctfshow{f87ad503c2c163471fbe768c9d7a9d6c}


misc53

提示:开始愉快的LSB部分。
解答:非常基础的LSB隐写。用stegsolve查看,可以看到三个颜色的0通道都发现了隐写痕迹。
在这里插入图片描述
在这里插入图片描述

ctfshow{69830d5a3a3b5006f7b11193e9bc22a2}


misc54

提示:还是愉快的LSB部分。
解答
Alpha0、B0、G0通道发现隐写痕迹,是竖向排列的,选择按列(column)。
在这里插入图片描述

在这里插入图片描述

ctfshow{b1f8ab24b8ca223d0affbf372ba0e4fa}


misc55

提示:怎么又是愉快的LSB部分。
解答:R0,G0,B0,竖向,但是直接这样提取没有发现信息。
图片是反转的,那可能涉及镜面反转。
在这里插入图片描述

方法一:可以用画图软件翻转一下,win自带的画图软件就可以实现。
在这里插入图片描述

然后再lsb分析一下啊,发现压缩包,save bin提取出来。
在这里插入图片描述

获取flag。
在这里插入图片描述

方法二:使用zsteg

zsteg -a misc55.png   
 #-a 查看各个通道的lsb,尝试各种已知组合

发现有一个通道有zip。
在这里插入图片描述

提取一下该通道,获取flag。
zsteg -e b1,rgb,lsb,YX misc55.png ->1.zip


misc56

提示:怎么老是愉快的LSB部分。
解答:lsb查看,发现r4,r2,r1,g4,g2,g1有。
在这里插入图片描述

获取flag。
在这里插入图片描述

ctfshow{1b30c28a5fca6cec5886b1d2cc8b1263}

### CTFShow Misc 40 题目解题思路 对于CTFShow平台上Misc分类下的第40号题目,虽然具体描述未直接提及[^1],但从其他类似题目的分析可以推测出可能涉及的技术方向。 #### 使用图像处理工具识别隐藏信息 一些杂项挑战涉及到图片隐写术,即在看似正常的文件中嵌入秘密消息。针对这类情况,`stegsolve.jar`是一个非常有用的Java应用程序,它可以帮助检测并提取这些隐蔽的数据。通过加载目标图像到该软件内,尝试不同的通道组合以及调整亮度对比度等参数来发现异常之处。 #### 利用命令行工具获取文件属性 当面对GIF格式的图形文件时,可以通过Linux下的ImageMagick套件中的`identify`指令快速查看其基本信息。例如执行如下Shell脚本能够输出每一帧所占用的空间大小: ```bash identify -format "%T " misc40.gif > info.txt ``` 这一步骤有助于判断是否存在额外附加的信息层或是被篡改过的痕迹[^2]。 #### 数据流校验与修复 如果怀疑原始素材遭到破坏或者故意设置了障碍,则可借助专门用于PNG格式维护的小型实用程序——`tweakpng.exe`来进行更深入的研究。此工具允许用户浏览内部结构、修改关键字段甚至恢复损坏的部分而不影响整体显示效果[^3]。 综上所述,在解决此类谜题过程中应当综合运用多种手段逐步逼近真相;同时也要注意积累经验教训以便日后遇到相似情形能更加从容应对。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值