赞
踩
打开即得flag
打开是一个txt文件,使用win的记事本打开,这个塒NG开头就是png文件了。
改后缀为png,打开即得flag。
也可以winhex或者010直接打开,从而知道是png文件
mac上可以用hex fiend
python3脚本
#用于获取图片中的文字
import pytesseract
from PIL import Image
pytesseract.pytesseract.tesseract_cmd = r'D:\应用\Tesseract-OCR\tesseract.exe'
tessdata_dir_config = r'--tessdata-dir "D:\应用\Tesseract-OCR\tessdata"'
image=Image.open(r"D:\this_is_feng\CTF\MISC\ctfshow_misc入门\misc2\misc2.png")
code = pytesseract.image_to_string(image, config=tessdata_dir_config)
print(code)
是bpg图片,正常不能打开,需要使用能查看bpg图片的软件打开
bpg下载
win使用方法
bpgview.exe 图片名称
mac上的不知道咋用,有师傅会的话教教我hhh
给了6个txt文件,hex fiend打开 看文件头和文件尾判断是什么文件
开头四个点 结尾也是点
即开头为.PNG,结尾为IEND.B
开头为GIF89a
BM开头
II开头
所以第一个为png、第二个是jpg、第三个是bmp、第四个是gif、第五个是tif、第六个是webp文件。应该为RIFFL开头
改后缀即可
用hex fiend或者win hex或者010打开,
总是感觉经过修改过后的图片显示的内容有点奇怪:
同上,搜索即可
提示:flag在图片文件信息中。
同上hexfiend打开搜索ctf即可
或者根据提示
右键查看属性、右键查看属性是常用的方法,不过获取不到图片的全部文件信息,也得不到这题的flag
听说可以使用在线网站查看详细的exif信息,但是还是没找到、显示不全
可交换图像文件格式(英语:Exchangeable image file format,官方简称Exif),是专门为数码相机的照片设定的,可以记录数码照片的属性信息和拍摄数据。
或者用notepad打开也能做
提示:flag在图片文件中图片文件中。
用hex fiend打开,可以发现图片的内容有PNG(即隐写了其他图片)手动或者binwalk或者foremost分离出图片。
binwalk
Binwalk是用于搜索给定二进制镜像文件以获取嵌入的文件和代码的工具。 具体来说,它被设计用于识别嵌入固件镜像内的文件和代码。 Binwalk使用libmagic库,因此它与Unix文件实用程序创建的魔数签名兼容。 Binwalk还包括一个自定义魔数签名文件,其中包含常见的诸如压缩/存档文件,固件头,Linux内核,引导加载程序,文件系统等的固件映像中常见文件的改进魔数签名。
输入命令 binwalk misc8.png
可以看见第三行还有一个png图片,起始地址是3892
输入命令:dd if=misc8.ong of=1.png skip=3892 bs=1
然后会在当前目录下生成一个1.png文件,打开即可
其中if=misc8.jpg是输入文件,of=1.png是输出文件,skip是指定从输入文件开头跳过3892个块后再开始复制,bs设置每次读写块的大小为1字节 。
foremost 和 binwalk 类似,主要是用于CTF_杂项的隐写题,分离提取隐写的文件。
输入命令
输入命令:foremost misc8.png
可以直接将图片文件中包含的所有文件分离,输出到一个output文件夹中。打开这个文件夹,我们可以看到audit.txt为记录分离过程的文件,png为该图片文件中包含的所有.png文件,zip为该图片文件中包含的所有.zip文件。打开png文件夹即可找到flag
提示:flag在图片块里
用hex fiend打开一样找得到flag
提示:flag在图片数据里。
binwalk -e 分离出数据后;打开第一个文件即得flag。
提示:flag在另一张图里。
根据上一题的知识点,加上提示,大概猜测为多个IDAT数据,导致显示不出来flag,删除其他IDAT数据,只保留flag的即可得到flag。
把第一个IDAT块的数据删除,然后另存为一张新图片
使用工具:Tweakpng
右击第一个IDAT块,然后delete就行了。
提示:flag在另一张图里。
和上题一样,不过这题有30个IDAT块,用PNGDebugger跑了一下,但是发现没有出错的IDAT块…测试后发现需要删掉前8个IDAT块
PNG Debugger 可以进行读取 PNG 图片的数据,检测各数据块中的 CRC 是否正确,在 Windows 下使用。
CRC 码是 循环冗余校验码 的简称,是 png 图片中一种的数据, 是目前使用非常广泛的数据校验方式,不仅能校验传递过来的数据正确性,还能筛查出哪一位出现了错误。
比如可用于判断 png 图片的宽和高是否正确。
使用方法:
进入pngdebugger 目录下使用命令
pngdebugger misc12.png
提示:flag位置在图片末尾。
hex fiend打开可以看见四处ctfshow flag字样
只有一处是对的
是这样解释的:
13是这样的,文件里一共塞了四个flag,需要判断哪一个是正确的。根据题目提示,“flag位置”在文件末尾,找到文件末尾的IEND块,会发现这个块是14字节而非通常的12字节,也就是说这个块除了4位长度、4位标识和4位CRC,还带了两位数据(通常IEND块是不带数据的,但它也可以带,这应该就是本题知识点)。这两位数据就是正确flag开头那个c字符的字节序号。换句话说其实先找到IEND块里这个序号,然后去找对应的字节,一眼就能看到flag了。强行硬找的话一般会找到第一个,那个是假的;但是不是很理解
png数据块结构
可以看到0DE1是隐藏的数据,
找到0DE1这一处即可
注意到{前面那一串字符,从第一位开始,每隔一位选取一个字符,连起来就是ctfshow
这里把这串十六进制数值复制下来,按照规律选取正确的数值
a="631A74B96685738668AA6F4B77B07B216114655336A5655433346578612534DD38EF66AB35103195381F628237BA6545347C3254647E373A64E465F136FA66F5341E3107321D665438F1333239E9616C7D"
flag=""
for i in range(0,len(a),4):
hexStr=a[i:i+2]
flag+=chr(int("0x"+hexStr,16))
print(flag)
提示:flag在那张图里。
猜测应该是图片中还有图片
使用命令
binwalk -e misc14.jpg
结果:
发现有4段、第四段还是jpeg文件
标签图像文件格式(Tag Image File Format,TIFF)是一种灵活的位图格式,主要用来存储包括照片和艺术图在内的图像,最初由Aldus公司与微软公司一起为PostScript打印开发。TIFF与JPEG和PNG一起成为流行的高位彩色图像格式。TIFF格式在业界得到了广泛的支持,如Adobe公司的Photoshop、The GIMP Team的GIMP、Ulead PhotoImpact和Paint Shop Pro等图像处理应用、QuarkXPress和Adobe InDesign这样的桌面印刷和页面排版应用,扫描、传真、文字处理、光学字符识别和其它一些应用等都支持这种格式。从Aldus获得了PageMaker印刷应用程序的Adobe公司控制着TIFF规范。
从binwalk分析出来的数据位置截取数据。可以看到其实地址为2103
使用命令
dd if=misc14.jpg of=flag.jpg skip=2103 bs=1
打开flag.jpg即可。关于dd命令可以看misc8
hex fiend打开即可
提示:flag在图片数据里。
使用命令
binwalk misc16.png
结果:
可以看见有一个lzma算法的压缩文件,(这种文件的后缀名为.lzma,可以用7-zip打开)
LZMA,(Lempel-Ziv-Markov chain-Algorithm的缩写),是一个Deflate和LZ77算法改良和优化后的压缩算法,开发者是Igor Pavlov,2001年被首次应用于7-Zip压缩工具中,是 2001年以来得到发展的一个数据压缩算法。它使用类似于 LZ77 的字典编码机制,在一般的情况下压缩率比 bzip2 为高,用于压缩的可变字典最大可达4GB。
方法:使用命令
binwalk -e misc16.png
打开结果里面的DD4文件即可
先binwalk分析,没啥问题,然后试试zsteg
zsteg工具:用于检测被隐写在png,bmp图片里的数据。
发现隐藏的数据,位置处于extradata:0;有3544 bytes的隐写内容
将数据提取出来:
zsteg -E "extradata:0" misc17.png > 1.txt
然后再binwalk -e把1.txt中的数据分离出来,拿到flag
binwalk -e 1.txt
提示:flag在标题、作者、照相机和镜头型号里。
使用在线网站查看详细的exif信息
提示:flag在主机上的文档名里。
方法同上
提示:flag在评论里。
方法同上
ctfshow{c97964b1aecf06e1d79c21ddad593e42}
提示:flag在序号里。
方法同上
16进制解码
得到:hex(X&Ys)
hex() 函数用于将10进制整数转换成16进制,以字符串形式表示。
将xy四段,每段分别转换为16进制,组合起来加上ctfshow{}即可
ctfshow{e8a221498d5c073b4084eb51b1a1686d}
提示:flag在图片里
知识点:
ThumbnailImage 缩略图
JPEG图片采用了有损压缩的方式,其过程比较复杂。过去的JPG图片是不含内嵌缩略图的,但现在为了能让大家快速查看其缩略图,研发PEG格式的专家组就制定了多一项标准在图片文件中记录了一些EX℉信息。数码照相机拍出的图片带有相机的很多参数,这都属于EXIF信息,其中缩略图也是一部分。缩略图其实是一幅较小的JPEG图片,存储在EXIF信息段,因此这个缩略图是内嵌在图片文件里面的。支持EX℉信息内嵌缩略图数据库的片格式的图片除了JPEG格式(.jpg、jpeg、jpe),还有PSD、PDD、EPS、TIF、TIFF等格式。
使用工具exiftool
使用命令:
exiftool -ThumbnailImage -b misc22.jpg > 1.jpg
工具命令:
1:-b (-binary) 以二进制输出元数据
2:生成image.raw的缩略图thumbnail.jpg
exiftool -b -ThumbnailImage image.raw > thumbnail.jpg
参考文章
打开1.jpg即可
或者使用magicexif直接打开
提示:flag在时间里。
时间应该是属于图片的属性,所苦可以用exiftool来查看
exiftool misc23.psd
可以看到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就是东八区的时间,即北京时间。
在线时间戳转换网站
在将转换后的时间戳转为16进制,将四段都这样处理拼起来套上ctfshow{}即可。
提示:
(本题为Misc入门图片篇和愚人节比赛特别联动题)
H4ppy Apr1l F001’s D4y!
愚人节到了,一群笨蛋往南飞,一会儿排成S字,一会儿排成B字。
用010editor或者windex搜索F001 全部高亮显示,得到flag
(mac上面的hexfiend好像不能全部高亮)
提示:flag在图片上面。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。