ctfshow学习记录-misc入门(图片篇-颜色通道50-59)
创始人
2024-04-05 09:18:49

目录

    • misc50
    • misc51
    • misc52
    • misc53
    • misc54
    • misc55
    • misc56
    • misc57
    • misc58
    • misc59

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

九某人的碎碎念:这篇一更,说明近期是真的没有时间写wp了。虽说好多都是之前做过的题,但是wp整理起来还是比较耗时的。近几个月事特别多,年底前基本没什么时间了,等不太忙了我再继续更新~
 
提醒:直接看misc59wp的师傅们可以先看一下misc57中”进一步学习“的链接(●°u°●)​ 」


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}


misc57

提示:没完没了的LSB部分。
解答:可看到rgb3-0通道都有。
在这里插入图片描述

zsteg不成功,那就是低位读取。(具体可看“进一步学习”的链接)

使用Stegslove,六个bit plane order,穷举吧。
测了一圈顺序,我一个也不认识。所以我干脆就把6个顺序全导出来,去linux下测了测。
在这里插入图片描述

测了之后发现GBR的是个zlib压缩数据。
在这里插入图片描述

找个了zlib压缩和解压缩的脚本。
用binwalk就可以解压缩:binwalk -e zlib文件

我下面也附上一个脚本实现的解压缩:
python使用zlib压缩和解压文件@CA-CA

import zlib
def decompress(infile, dst):infile = open(infile, 'rb')dst = open(dst, 'wb')decompress = zlib.decompressobj()data = infile.read(1024)while data:dst.write(decompress.decompress(data))data = infile.read(1024)dst.write(decompress.flush())
decompress('555',"555.dat")

在这里插入图片描述
进一步学习

java lsb隐写_LSB隐写工具对比(Stegsolve与zsteg)@非专业de人士


misc58

提示:似曾相识的LSB部分。
解答:是 rb:3-1。
在这里插入图片描述

用stegsolve分析不出来,那就是小端存放,先用zsteg分析一下看看是不是高位读取。确实能够获取数据,再利用上面的zlib脚本就获取到了flag。
在这里插入图片描述


misc59

提示:LSB之两个工具两个工具跑得快跑得快全都解不出来全都解不出来真奇怪真奇怪。

解答:rbg2-0应该不用多说了。

两个工具都跑不出来,其实就是低位读取,小端存放。(注:misc57的“进一步学习”里有相关知识点链接)

那么用Stegsolve把数据导出,选择LSBFirst低位读取。save bin。
(导出rgb就可以,我起初以为要六个都测一遍,没想到第一个就是)
在这里插入图片描述

然后把读取的数据小端存放即可。

import binasciiwith open('rgb1','rb')as file:content=file.read()content_hex=binascii.hexlify(content)
result=""
for i in range(0,len(content_hex),2):tmp=str(bin(int(content_hex[i:i+2],16))[2:].zfill(4*2))result+=tmp[::-1]
result_hex=hex(int(result,2))[2:]
result_data = bytearray.fromhex(result_hex)
with open('rgb1_lsb_large.zip','wb') as file2:file2.write(result_data)

执行后得到一个压缩包,打开压缩包获取flag。
在这里插入图片描述

期待师傅们可以更一下misc61的wp,让我学习学习,目前还没有思路~

上一篇:MQ刷盘机制

下一篇:【SIFT】LoG 与 DoG

相关内容

热门资讯

埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...