【CTFSHOW】misc入门(9-38)
misc9
使用notepad打开即可查找到flag。
这里使用strings命令
misc10
binwalk 可以一把梭
misc11
删除第一个IDAT块保存即可 工具:Tweakpng
misc12
删除前8个IDAT块
关于png格式分析文章传送门:https://www.cnblogs.com/lidabo/p/3701197.html
misc13
根据提示寻找flag
将选中部分取下,隔一个字节单独取出,再转为字符串即可
1 | s='63 1A 74 B9 66 85 73 86 68 AA 6F 4B 77 B0 7B 21 61 14 65 53 36 A5 65 54 33 34 65 78 61 25 34 DD 38 EF 66 AB 35 10 31 95 38 1F 62 82 37 BA 65 45 34 7C 32 54 64 7E 37 3A 64 E4 65 F1 36 FA 66 F5 34 1E 31 07 32 1D 66 54 38 F1 33 32 39 E9 61 6C 7D'.replace(' ','') |
misc14
从图片所示位置选中至结尾另存为一张图片即为flag
misc15
记事本打开即可发现flag
misc16
使用binwalk,再cat分离出的文件
misc17
zsteg图片,发现信息再extradata:0处。提取后用binwalk可以分理出一张图片,即为flag
misc18
按照提示打开照片属性即可
misc19
这一题需要使用exif查看图片信息,在线网址
也可以直接用hexeditor或者notepad打开搜索两个字符串,拼接后即为flag
misc20
这题原理同上
misc21
根据提示,使用前两题使用的在线工具查看序列号
将序列号转字符,得到提示
寻找可能成为x,y的值,并且将其拼接后转16进制
结果错了,尝试将四个数据分别转换后再拼接才行。
misc22
本题为thumbnail隐写,使用工具:exiftool将flag隐藏于文件缩略图中。
隐写后使用Stegsolve,MagicEXIF或XnView等工具即可查看缩略图获取隐藏信息
misc23
首先使用上题提到的exiftool查看图片信息,在history action一栏找到提示,时间戳与16进制
使用在线网址转换四个时间得到四段时间戳:874865822 2699237688 2156662245 460377706
按照21的经验,将以上四段时间戳分别换为16进制再拼接即可。
misc24
文件共占用675056字节,根据题目提示,这题的flag被隐藏于图片上面,猜测应该是修改了图片高度
去除文件头以及windows“补零”后占用的空间,真实的文件大小应该为675056-56=675000字节。其中,每个像素点由三个字节控制(R、G、B),因此,图像的像素总大小为675000/3=225000
再用图片的宽度(上图红框部分)去除225000得到正确的高度(上图蓝框部分)即可得到flag
即22500/900=250=0xFA
misc25
用tweakpng打开文件,提示crc错误,这是因为修改了高宽,却没有修改CRC,导致读取报错。在linux系统中这样的图片将无法打开。
对于这题具体分析如下,其中CRC校验码由IDCH和IHDR共17位字节计算得到。
1 | 89 50 4E 47 0D 0A 1A 0A //PNG格式固定开头 |
使用脚本爆破图片的高:
1 | #crc.py |
将高修改为FA即可看到flag
misc26
使用上题的脚本爆破本题原来的高度为0x25E,修改后看到
填入真正的高度提交即可。
misc27
这题暂时没有找到更优的解法,查看属性得知
图片的宽度为150,对应十六进制的96.使用16进制查看器搜索十六进制96,将它修改为较大的值。
misc28
解法同上题,格式为gif,仅有一帧。值得注意的是,这题有多个十六进制字段为96,但只有一个表示图片的高度。这里使用010editor的gif.bt模板可以更清楚地浏览和修改图片的宽高(图片标记处)。后使用22题提到过的查看器在缩略图中即可查看flag。
misc29
格式同上题,但是本题图片共10帧。修改每一帧的高,发现flag藏于第八帧下。
Misc30
本题为24题的复刻版,本题修改的是宽度,950即十六进制的3B6,但是bmp格式采用小端储存方式,所以要改成B603
misc31
计算方式同24,计算得到宽度为1082(舍去余数),即0x43A
misc32
这题和25类似,都可以用之前的脚本根据crc32爆破出正确的宽高(前提是直到其中的一个正确值)
图中结果为16进制。
1 | import binascii |
misc33
这里贴上一个别人的同时爆破png图片宽高的脚本。
1 | import zlib |
misc34
脚本来源:https://blog.csdn.net/weixin_45696568/article/details/115261347
本题校验码也被修改,根据提示,将所有900-1200范围内的宽度图片都保存下来,再观察哪个是正确的结果:
1 | import struct |
misc35
算法同34,但是需要提前修改图片基础高度。这里我修改为0x0258
1 | import struct |
正确宽度为993-1000间的任何一个数字。
misc36
这题同样先修改图片高度。
1 | import struct |
正确宽度:941
misc37
stegsolve的framebrowser浏览各帧
misc38
同样是动图,用浏览器打开就可以看到效果。关于apng格式介绍:https://baike.baidu.com/item/APNG/3582613?fr=aladdin
本题工具:apng Disassembler
查看分解得到的每个帧