图片篇(基础操作)
MISC 1
图片内容就是flag,利用提取微信或者qq中提取文字即可免于手打
MISC 2
发现是PNG的格式直接改后缀png 即可得到flag
也可以用winhex打开,发现是png格式
MISC 3
解压后是bpg图片,正常不能打开,需要使用能查看bpg图片的软件打开
./bpgview.exe E:\学习资料\ctf\MISC\misc3\misc3.bpg
或者用Honeyview打开
MISC 4
解压后有四个txt文件
JPEG
文件头:FF D8 FF
文件尾:FF D9
TGA
未压缩的前4字节 00 00 02 00
RLE压缩的前5字节 00 00 10 00 00
PNG
文件头:89 50 4E 47 0D 0A 1A 0A
文件尾:AE 42 60 82
GIF
文件头:47 49 46 38 39(37) 61
文件尾:00 3B
BMP
文件头:42 4D
文件头标识(2 bytes) 42(B) 4D(M)
TIFF (tif)
文件头:49 49 2A 00
ico
文件头:00 00 01 00
Adobe Photoshop (psd)
文件头:38 42 50 53
可以得出第一个为png,第二个为jpg,第三个为BMP,第四个为gif,第五个为tif,第六个为webp
ctfshow{4314e2b15ad9a960e7d9d8fc2ff902da}
MISC 5
用winhex打开,可以找到ctfshow
MISC 6
用winhex打开,可以找到ctfshow
MISC 7
用winhex打开,可以找到ctfshow
MISC 8
首先使用binwalk
用foremost分离,发现里面有两张图片,其中一张有flag
MISC 9
用winhex打开,可以找到ctfshow
MISC 10
首先binwalk一下,发现有两个Zlib compressed data
将文件分离出来
第一个文件就是flag
MISC 11
Binwalk一下
发现有两个Zlib
Zlib是PNG IDAT块数据可选的压缩格式
Binwalk -e之后会对我们的Zlib进行自动解压
用工具TweakPNG打开,删掉第一个IDAT块
MISC 12
用PNGDebugger跑了一下,但是发现没有出错的IDAT块
知识点
PNG Debugger 可以进行读取 PNG 图片的数据,检测各数据块中的 CRC 是否正确,在 Windows 下使用。
CRC 码是 循环冗余校验码 的简称,是 png 图片中一种的数据, 是目前使用非常广泛的数据校验方式,不仅能校验传递过来的数据正确性,还能筛查出哪一位出现了错误。
比如可用于判断 png 图片的宽和高是否正确
发现都没问题
看网上的wp显示删掉前八个IDAT
MISC 13
题目提示flag位置在图片末尾。
用tweakpng发现IEND块长度异常,正常来讲它的长度应该是0,但是这里为2,一开始不知道多的这个块有啥意思
看网上提示多的那两位是flag的位置,才恍然大悟,这里也加了混淆,即需要隔位取,所以不能直接strings出来
写一个脚本
a="631A74B96685738668AA6F4B77B07B216114655336A5655433346578612534DD38EF66AB35103195381F628237BA6545347C3254647E373A64E465F136FA66F5341E3107321D665438F1333239E9616C7D"
r = ''
s=bytes.fromhex(a)
for i in range(0,len(s),2):
r+=chr(s[i])
print(r)
#fromhex函数把一串16进制字符,每两位转换成16进制的对象
得到flag
ctfshow{ae6e3ea48f518b7e42d7de6f412f839a}
MISC 14
binwalk后发现一张JFIF图片
直接在010里面搜JFIF找到文件头
MISC 15
用WinHex打开看
MISC 16
用binwalk试试
可以看见有一个lzma算法的压缩文件,(这种文件的后缀名为.lzma,可以用7-zip打开)
打开打打dd4
即可获得flag
MISC 17
zsteg工具:用于检测被隐写在png,bmp图片里的数据。
先binwalk分析,没啥问题,然后试试zsteg
发现隐藏的数据,位置处于extradata:0;有3544 bytes的隐写内容
将数据提取出来:
zsteg -E "extradata:0" misc17.png > 1.txt
然后再binwalk -e把1.txt中的数据分离出来,拿到flag
binwalk -e 1.txt
MISC 18
提示:flag在标题、作者、照相机和镜头型号里
右键属性查看
ctfshow{325d60c208f728ac17e5f02d4cf5a839}
MISC 19
根据提示:flag在主机上的文档名里 直接使用网站查看:
ctfshow{dfdcf08038cd446a5eb50782f8d3605d}
MISC 20
方法如上
或者利用kali
ctfshow{c97964b1aecf06e1d79c21ddad593e42}
MISC 21
根据提示:flag在序号里
发现序列号是串hex,提示hex(X&Ys)
刚好exif信息里还有两组XY,分开hex再合起来就是flag
因为我们知道 flag的规律 直接提交肯定不对 所以需要把 xy 四段转为 16进制 然后在加上flag格式。
3902939465237161861910824528172980145261 #转16进制 即可
ctfshow{e8a221498d5c073b4084eb51b1a1686d}
MISC 22
提示:flag在图片里
知识点:
ThumbnailImage 缩略图
JPEG图片采用了有损压缩的方式,其过程比较复杂。过去的JPG图片是不含内嵌缩略图的,但现在为了能让大家快速查看其缩略图,研发PEG格式的专家组就制定了多一项标准在图片文件中记录了一些EX℉信息。数码照相机拍出的图片带有相机的很多参数,这都属于EXIF信息,其中缩略图也是一部分。缩略图其实是一幅较小的JPEG图片,存储在EXIF信息段,因此这个缩略图是内嵌在图片文件里面的。支持EX℉信息内嵌缩略图数据库的片格式的图片除了JPEG格式(.jpg、jpeg、jpe),还有PSD、PDD、EPS、TIF、TIFF等格式。
使用工具exiftool
https://www.rmnof.com/article/exiftool-introduction/
使用命令:
exiftool -ThumbnailImage -b misc22.jpg > 1.jpg
工具命令:
1:-b (-binary) 以二进制输出元数据
2:生成image.raw的缩略图thumbnail.jpg
exiftool -ThumbnailImage -b misc22.jpg > 1.jpg
打开1.jpg即可
或者使用工具MagicEXIF打开也能看到缩略图
MISC 23
提示:flag在时间里。
可以看到flag的形式, UnixTimestamp, DECtoHEX, getflag
Timestamp指的是时间戳,DECtoHEX是十进制转十六进制
(decimalism十进制,hexadecimal十六进制)
根据提示
History When : 1997:09:22 02:17:02+08:00, 2055:07:15 12:14:48+08:00, 2038:05:05 16:50:45+08:00, 1984:08:03 18:41:46+08:00
+08:00是转换为北京时间的意思
UTC是国际时,UTC+8就是国际时加八小时,是东八区时间,是北京时间。
GMT就是指格林尼治所在地的标准时间,+8:00就是东八区的时间,即北京时间。
时间戳(Unix timestamp)转换工具 - 在线工具
874865822 2699237688 2156662245 460377706 #全部转为16进制
在将转换后的时间戳转为16进制,将四段都这样处理拼起来套上ctfshow{}即可
ctfshow{3425649ea0e31938808c0de51b70ce6a}
MISC 41
这题还是比较有意思的 根据提示:H4ppy Apr1l F001's D4y!
愚人节到了,一群笨蛋往南飞,一会儿排成S字,一会儿排成B字。
使用Editor 打开 搜索 F001 可以看到 ctf 的样式 把他提取 出来即可