当前位置:   article > 正文

CTFSHOW-MISC入门_ctfshow misc入门

ctfshow misc入门

图片篇(基础操作)

MISC 1

打开即得flag

MISC 2

请添加图片描述打开是一个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)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

关于pytesseract,可以参考这个

MISC 3

是bpg图片,正常不能打开,需要使用能查看bpg图片的软件打开
bpg下载
win使用方法

 bpgview.exe 图片名称
  • 1

mac上的不知道咋用,有师傅会的话教教我hhh

MISC 4

给了6个txt文件,hex fiend打开 看文件头和文件尾判断是什么文件

知识点

  1. JPEG\JPG
    文件头:FF D8 FF     
    文件尾:FF D9
    开头四个点 结尾也是点
  2. TGA
    未压缩的前4字节 00 00 02 00
    RLE压缩的前5字节 00 00 10 00 00
  3. PNG
    文件头:89 50 4E 47 0D 0A 1A 0A    
    文件尾:AE 42 60 82
    即开头为.PNG,结尾为IEND.B
  4. GIF
    文件头:47 49 46 38 39(37) 61    
    文件尾:00 3B
    开头为GIF89a
  5. BMP
    文件头:42 4D
    文件头标识(2 bytes) 42(B) 4D(M)
    BM开头
  6. TIFF (tif)
    文件头:49 49 2A 00
    II开头
  7. ico
    文件头:00 00 01 00
    Adobe Photoshop (psd)
    文件头:38 42 50 53

所以第一个为png、第二个是jpg、第三个是bmp、第四个是gif、第五个是tif、第六个是webp文件。应该为RIFFL开头
改后缀即可

图片篇(信息附加)

MISC 5

用hex fiend或者win hex或者010打开,
请添加图片描述

总是感觉经过修改过后的图片显示的内容有点奇怪:
请添加图片描述

MISC 6

同上,搜索即可
请添加图片描述

MISC 7

提示:flag在图片文件信息中。
同上hexfiend打开搜索ctf即可

或者根据提示
右键查看属性、右键查看属性是常用的方法,不过获取不到图片的全部文件信息,也得不到这题的flag
听说可以使用在线网站查看详细的exif信息,但是还是没找到、显示不全

可交换图像文件格式(英语:Exchangeable image file format,官方简称Exif),是专门为数码相机的照片设定的,可以记录数码照片的属性信息和拍摄数据。

或者用notepad打开也能做

MISC 8

提示:flag在图片文件中图片文件中。
用hex fiend打开,可以发现图片的内容有PNG(即隐写了其他图片)手动或者binwalk或者foremost分离出图片。
请添加图片描述
binwalk

Binwalk是用于搜索给定二进制镜像文件以获取嵌入的文件和代码的工具。 具体来说,它被设计用于识别嵌入固件镜像内的文件和代码。 Binwalk使用libmagic库,因此它与Unix文件实用程序创建的魔数签名兼容。 Binwalk还包括一个自定义魔数签名文件,其中包含常见的诸如压缩/存档文件,固件头,Linux内核,引导加载程序,文件系统等的固件映像中常见文件的改进魔数签名。

使用方法参考文章

使用binwalk

输入命令 binwalk misc8.png
  • 1

请添加图片描述可以看见第三行还有一个png图片,起始地址是3892

输入命令:dd if=misc8.ong of=1.png skip=3892 bs=1
  • 1

然后会在当前目录下生成一个1.png文件,打开即可
其中if=misc8.jpg是输入文件,of=1.png是输出文件,skip是指定从输入文件开头跳过3892个块后再开始复制,bs设置每次读写块的大小为1字节 。

使用命令foremost

foremost 和 binwalk 类似,主要是用于CTF_杂项的隐写题,分离提取隐写的文件。

输入命令

输入命令:foremost misc8.png
  • 1

可以直接将图片文件中包含的所有文件分离,输出到一个output文件夹中。打开这个文件夹,我们可以看到audit.txt为记录分离过程的文件,png为该图片文件中包含的所有.png文件,zip为该图片文件中包含的所有.zip文件。打开png文件夹即可找到flag

MISC 9

提示:flag在图片块里
用hex fiend打开一样找得到flag

MISC 10

提示:flag在图片数据里。
binwalk -e 分离出数据后;打开第一个文件即得flag。

知识点

请添加图片描述

请添加图片描述

MISC 11

提示:flag在另一张图里。
根据上一题的知识点,加上提示,大概猜测为多个IDAT数据,导致显示不出来flag,删除其他IDAT数据,只保留flag的即可得到flag。
把第一个IDAT块的数据删除,然后另存为一张新图片
使用工具:Tweakpng
右击第一个IDAT块,然后delete就行了。
请添加图片描述

MISC 12

提示:flag在另一张图里。

和上题一样,不过这题有30个IDAT块,用PNGDebugger跑了一下,但是发现没有出错的IDAT块…测试后发现需要删掉前8个IDAT块

知识点

PNG Debugger 可以进行读取 PNG 图片的数据,检测各数据块中的 CRC 是否正确,在 Windows 下使用。
CRC 码是 循环冗余校验码 的简称,是 png 图片中一种的数据, 是目前使用非常广泛的数据校验方式,不仅能校验传递过来的数据正确性,还能筛查出哪一位出现了错误。
比如可用于判断 png 图片的宽和高是否正确。

使用方法:
进入pngdebugger 目录下使用命令

pngdebugger misc12.png
  • 1

请添加图片描述

MISC 13

提示: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)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

MISC 14

提示:flag在那张图里。
猜测应该是图片中还有图片

使用命令

binwalk -e misc14.jpg
  • 1

结果:
请添加图片描述
发现有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
  • 1

打开flag.jpg即可。关于dd命令可以看misc8

MISC15

hex fiend打开即可
请添加图片描述

MISC16

提示:flag在图片数据里。
使用命令

binwalk misc16.png
  • 1

结果:
请添加图片描述
可以看见有一个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
  • 1

打开结果里面的DD4文件即可

MISC17

先binwalk分析,没啥问题,然后试试zsteg

zsteg工具:用于检测被隐写在png,bmp图片里的数据。

请添加图片描述
发现隐藏的数据,位置处于extradata:0;有3544 bytes的隐写内容
将数据提取出来:

zsteg -E  "extradata:0" misc17.png > 1.txt
  • 1

然后再binwalk -e把1.txt中的数据分离出来,拿到flag

binwalk -e 1.txt
  • 1

MISC 18

提示:flag在标题、作者、照相机和镜头型号里。
使用在线网站查看详细的exif信息
请添加图片描述

MISC 19

提示:flag在主机上的文档名里。
方法同上

MISC 20

提示:flag在评论里。
方法同上
请添加图片描述
ctfshow{c97964b1aecf06e1d79c21ddad593e42}

MISC 21

提示:flag在序号里。
方法同上
请添加图片描述
16进制解码
得到:hex(X&Ys)

hex() 函数用于将10进制整数转换成16进制,以字符串形式表示。
请添加图片描述

将xy四段,每段分别转换为16进制,组合起来加上ctfshow{}即可
ctfshow{e8a221498d5c073b4084eb51b1a1686d}

MISC 22

提示: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

工具命令:

1:-b (-binary) 以二进制输出元数据
2:生成image.raw的缩略图thumbnail.jpg
exiftool -b -ThumbnailImage image.raw > thumbnail.jpg
参考文章

打开1.jpg即可
请添加图片描述
或者使用magicexif直接打开

请添加图片描述

MISC 23

提示:flag在时间里。
时间应该是属于图片的属性,所苦可以用exiftool来查看

exiftool misc23.psd
  • 1

请添加图片描述
可以看到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 41

提示:
(本题为Misc入门图片篇和愚人节比赛特别联动题)
H4ppy Apr1l F001’s D4y!
愚人节到了,一群笨蛋往南飞,一会儿排成S字,一会儿排成B字。
用010editor或者windex搜索F001 全部高亮显示,得到flag
(mac上面的hexfiend好像不能全部高亮)
请添加图片描述
请添加图片描述

图片篇(文件结构)

MISC 24

提示:flag在图片上面。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/381656
推荐阅读
相关标签
  

闽ICP备14008679号