ctfshow-misc入门
图片篇(文件结构)
misc24
1.在010Editor中打开文件,根据鼠标自动提示找到图片宽高对应的地方
biWidth
指定图象的宽度,单位是象素。
biHeight
指定图象的高度,单位是象素。
2.修改图片高度为250px并另存
3.打开后得到flag
misc25
1.从网上找到的脚本(将脚本和图片放在同一个文件夹中更加方便)
https://blog.csdn.net/m0_58030673/article/details/128794368
`import binascii
import struct
crcbp = open("misc25.png", "rb").read() #打开图片
crc32frombp = int(crcbp[29:33].hex(),16) #读取图片中的CRC校验值
print(crc32frombp)
for i in range(4000): #宽度1-4000进行枚举
for j in range(4000): #高度1-4000进行枚举
data = crcbp[12:16] +
struct.pack('>i', i)+struct.pack('>i', j)+crcbp[24:29]
crc32 = binascii.crc32(data) & 0xffffffff
# print(crc32)
if(crc32 == crc32frombp): #计算当图片大小为i:j时的CRC校验值,与图片中的CRC比较,当相同,则图片大小已经确定
print(i, j)
print('hex:', hex(i), hex(j))
exit(0)`
2.得到下列结果,结果与宽高对应,根据结果修改
3.修改完后另存文件
4.打开文件后得到flag
misc26
1.步骤与25类似,只是最后结果中要求找到图片真实的高,hex代表十六进制,求出来为25e
misc27
在010editor中查找高宽度可以先看图片属性的高和宽,在转换成十六进制,在010中搜索找到,一般尽量往大了改
将这个宽0096改成00FF
misc28
1.这个题出现了十六进制x86低位在前高位在后,所有查找的时候我查的9600
2.找到flag
misc29
1.多处改高度,可以选择全部替换
2.打开后是动图,flag藏在里面,用StegSolve逐帧查看图片
misc30
题目提示图片宽度为950,转成十六进制是3B6
在010中改下就可以看到flag了
![](/i/l/?n=23&i=blog/3197645/202305/3197645-20230528200858279-63363641.jpg
misc31
题目提示图片宽度不对,84 03改成39 04就可以看见倾斜的flag了
misc32
1.脚本得到宽高
2.修改宽得到flag
misc33
同上用脚本得宽高改宽高
misc34
根据题目提示,crc改了,不能通过脚本爆破,所以通过慢慢改宽趋近于正确值0463得到结果
misc35
高0296宽03E4
misc36
根据题目提升宽在398-3B6间,同上更改高宽度
37
stegslove中翻看
misc38
Honeyview工具查看
misc39
在kali中安装identify
sudo apt-get install imagemagick
输入命令
identify -format "%T " misc39.gif > 1.txt
提取出
将37换成1,36换成0,使用脚本得出flag
misc40
先安装工具apngdisassembler
分解APNG图片,分解APNG动画图片中每一帧,并且把帧导出保存为图片文件。
处理后,每一帧图片还带有一个 txt 文件
链接:https://sourceforge.net/projects/apngdis/files/latest/download
用网上的脚本处理得到flag
misc42
chr(x):用一个数值作参数,返回一个对应的unicode字符,该参数的有效范围是从0到1114111(16进制时为0x10FFFF),参数可以是十进制,也可以是十六进制。
查看网上大佬们的wp,并借用其脚本将IDAT的length值进行char转化(难道提示中说的长度=2cm是length中第二板块IDAT的值转化而成?(个人乱猜的想法))
misc43
先在kali中安装PCRT在执行命令
提取出错误crc---chunk crc
在converter中转换
misc50
用Stegslove查看文件