ctfshow刷题笔记-misc入门

Posted zxqt

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ctfshow刷题笔记-misc入门相关的知识,希望对你有一定的参考价值。

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了
![](https://img2023.cnblogs.com/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查看文件


CTFshow刷题日记-MISC-图片篇(上)基础操作和信息附加

ctfshow 图片篇引语

  • 大部分题目仅涉及单一知识点,但可能有多种解法;
  • 找到flag并不困难,关键是了解每一题背后的原理;
  • 藏在哪?为什么可以这样藏?请多考虑这两个问题;

misc脑图-misc之神丁神给的

基础操作

misc1-签到题

打开图片就是flag

misc2-改后缀

下载之后是一段文本,打开发现png的文件头,将txt后缀改成png,查看图片,获得flag

misc3-bpg格式

下载我就直接打开了,我还寻思就这?,原来是我的图片查看器帮了忙,bpg文件,推荐蜂蜜浏览器

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ChXAbQGw-1631199055893)(F:_笔记\\mdpic\\1.CTFshow刷题日记-MISC-图片篇(上)] - 副本\\image-20210909170530982.png)

misc4-改后缀

下载发现是六个文档

然后每个文档打开都是看似乱码的六种不同格式的图片,只要根据其文件头将其改为正确的格式即可

从1-6分别是png,jpg,bmp,gif,tif,webp

每张图都是flag的一部分

信息附加

misc5-7-010直接搜

010打开,搜ctfshow找到flag

misc8-分离文件

提示:flag在图片文件中图片文件中。

给的是png,根据提示猜测可能是改了高度,或者要分离文件,该高度无果,在kali中使用分离命令foremost分离图片,成功分离出flag

misc9-010直接搜

提示:flag在图片块里

010打开,搜ctfshow找到flag

misc10-分离文件

提示:flag在图片数据里

使用binwalk -e命令分离文件

原理-引用z.volcano师傅博客

misc11-双IDAT块

提示:flag在另一张图里

IDAT

图像数据块IDAT(image data chunk):它存储实际的数据, 在数据流中可包含多个连续顺序的图像数据块。
IDAT存放着图像真正的数据信息,因此,如果能够了解IDAT的结构,我们就可以很方便的生成PNG图像。

010打开发现有两个IDAT数据块

把第一段IDAT删除,另存为图片内容就是flag

misc12-多IDAT块

提示:flag在另一张图里

打开发现有十多个IDAT,可以使用tweakpng这个工具边删边保存,发现删除前八个flag就出来了

misc13

试了多种方法没解出来

在010使用正则表达式搜索 c.*t.*f

发现两个有点像flag的字符串

flag格式是ctfshow很明显这是每隔一个字符有一个垃圾字符,python简单处理下

str = "ct¹f…s†hªoKw°{!aeS6¥eT34fxa%4Ý8ïf«52•8b‚1º7E4|2Td~7:2äeñ6úfõ4129T8ñ328é0l}"
flag = ""
for i in range(len(str)):
    if (i%2==0):
        flag = flag + str[i]
print(flag)

运行得到flag

misc14-手动分离图片

jpg格式的图片

在kali中使用命令却分不出来,使用010

在0x837位置发现另一张jpg图片,从837选择到末尾,右键选择->保存选择

保存生成一个新文件,即为flag

misc15-010一把梭

提示:flag被跳过去了

不知道啥意思但是010一把撸

misc16-binwalk一把梭

misc17-steg

提示:flag在图片数据里

使用zsteg命令发现隐藏的数据

使用命令提取数据

zsteg -E "extradata:0" ./misc17.png > ./png
// 名字随便定义

使用命令去分离

binwalk -e png

misc18-图片属性

提取:flag在标题、作者、照相机和镜头型号里

简单肯定在属性里边

flag分成了三段

misc19-010

提示:flag在主机上的文档名里

010一把梭

两段拼一下就有了

misc20-exiftool工具

提示:flag在评论里

可以使用工具exiftool

但是环境问题是乱码,在linux下查看

如果没有exiftool,可以安装,教程

这flag需要译一下

misc21-转换

提示:flag在序号里

同样使用exiftool命令查看

发现序列号提交不正确,经过十六进制转码发现问题

也就是说吧x和y都要分别进行转换而不是合一起转换,python的hex()

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Sao2gnwl-1631199055913)(F:_笔记\\mdpic\\1.CTFshow刷题日记-MISC-图片篇(上)] \\image-20210909214809200.png)

再用ctfshow{}包裹

misc22-缩略图隐写

提示:flag在图片里

缩略图竟然和图片不一样,学到了

这是magicexif

利用exiftool工具导出图片

exiftool.exe -ThumbnailImage -b misc22.jpg > 1.jpg

misc23-属性转换

提示:flag在时间里

使用exiftool命令查看信息

发现四个时间,将时间转换成时间戳网站https://www.zxgj.cn/g/unix

再用21题的方法,进行hex编码

misc41-抽象

提示:

H4ppy Apr1l F001’s D4y!
愚人节到了,一群笨蛋往南飞,一会儿排成S字,一会儿排成B字。

愚人节限定题,下载得到misc41.jpg,用winhex打开,发现是jpg的文件尾,但是文件头对不上,本来想以这个方向为突破点,没得到结果…

后面看了套神的wp才知道,提示中的第二句说的就是我…

第一句提示的F001才是真突破点,这个位置有大量F001,看起来组成了某种形状

我的思路是,把F001出现过的位置中所有十六进制的值单独截取出来,每四位分隔开,把F001替换成0,其他值替换成空格。 最后变成下图的8*125的“图”,其实如果会用CyberChef会更方便,不过我不太习惯。

依稀看出flag:ctfshow{fcbd427caf4a52f1147ab44346cd1cdd}

来自https://blog.csdn.net/weixin_45696568/article/details/115261347

参考链接

z.volcano

以上是关于ctfshow刷题笔记-misc入门的主要内容,如果未能解决你的问题,请参考以下文章

CTFshow刷题日记-MISC-图片篇(下 24-51)文件结构与颜色通道

ctfshow-Misc入门

ctfshow-Misc入门 图片篇(50-56)

ctfshow 做题 MISC入门 模块

ctfshow-Misc入门 图片篇(50-54)

ctfshow-Misc入门 图片篇(50-60)