前言

废物web狗只会web,结果就是比赛的时候web一道不会,其他方向也是一点也不会,菜死我了呜呜呜要开始学习一下MISC,跟着八神的MISC入门来慢慢学习,整篇文章可能不会有自己独立解出的题目(小白落泪),暂时只能跟着网上师傅们的WP慢慢的来学习MISC的图片篇中的各种隐写姿势,但是MISC的学习只是真的课余了,主要还是去学习web,大概会1-2天做1-2题,这样慢慢的学习,相信日积月累下去,自己的MISC也可以成长起来。

misc1

图片的内容就是flag,利用一下QQ图片的那个提取图片中的文字,就可以免于手打了。

misc2

得到的是txt文件,主要还是看文件头,可以记事本直接打开,看到这个:
在这里插入图片描述
这个塒NG开头就是png文件了,也可以winhex打开:
在这里插入图片描述
可以看到PNG的文件头,把.txt改成.png就可以打开图片了,图片内容就是flag。

从别的师傅那里看到了用python获得图片中文字的方法:

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)

关于pytesseract,可以参考这个:
Python3使用 pytesseract 进行图片识别
在这里插入图片描述
学到了,学到了。

misc3

是bpg图片,正常不能打开,需要使用能查看bpg图片的软件打开,进行下载:
bpg

然后命令行使用即可。

 ./bpgview.exe D:\this_is_feng\CTF\MISC\ctfshow_misc入门\misc3\misc3.bpg

misc4

这题看了第一个图片的头是png,就把所有的图片后缀都改成png,然后把每个图片中的内容拼接出来就是flag。
但是看了别的师傅的WP,其实这样并不太对,因为真正的只有第一个图片的png,其他的几个txt都不是png图片,网上查了一下:

  • 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

所以第二个是jpg,第三个是bmp,第四个是gif,第五个是tif,第六个是webp文件。

misc5

做出来了我青结,虽然是最简单的misc。。。。
用winhex打开图片搜索ctfshow{,在最后找到flag。

misc6

同上

misc7

提示是:

flag在图片文件信息中。

我以为就是右键属性,藏在这里,但是发现没有:
在这里插入图片描述
winhex打开,搜索直接找到了flag。看了别的师傅的wp:

直接右键查看属性是常用的方法,不过获取不到图片的全部文件信息,也得不到这题的flag

图虫EXIF查看器

不过这玩意还是看不到flag,只是信息比较全罢了,不过先收藏着,以后或许用得到。

misc8

flag在图片文件中图片文件中。

没太懂这提示是什么意思,看了一下WP,是图片中还隐写了其他图片:
在这里插入图片描述
可以使用binwalk或者foremost,参考文章:
MISC中图片隐藏文件分离
在这里插入图片描述
再去output目录里面去看分离出来的所有文件,有一张打开就可以看到flag,再转文字即可。
学到了学到了,binwalk和foremost这两个还要再学习学习,熟练一下。

misc9

提示在图片块里,师傅们说是也就是数据块。但是其实这题直接winhex打开搜索也可以直接发现flag。
在这里插入图片描述
用010Editor看一下的话,这个 chunk估计就是所谓的数据块了。在这里插入图片描述

misc10

知识盲区,提示flag在图片数据里。图片数据又是个什么鬼。。。。
查了一下。在这里插入图片描述

用binwalk看一下,发现有2个Zlib compressed data。
Binwalk工具的详细使用说明
使用binwalk -e来提取一下文件。
在这里插入图片描述
打开第一个文件就可以得到flag。
八神关于原理的解释:
在这里插入图片描述
学到了,学到了。

misc11

又学到新东西了,提示是:

flag在另一张图里。

拿010 Editor打开看一下,发现和上一题一样有2个IDAT块,我想既然是另一张图,以为还是之前那样,把IDAT块取出来然后解压就可以得到另一张图片了,但是发现没有。。。
看了一下别的师傅的WP,这题原来是要删除第一个IDAT块,这样得到的新的图片就可以得到flag了。

删除IDAT块比较方便的是使用tweakpng这个工具:
Tweakpng

只需要右击第一个IDAT块,然后delete就行了。

misc12

做法同上,删掉前8个IDAT数据块就可以了。

misc13

flag位置在图片末尾。

我一开始以为是图片的IEND块有问题,但是改了发现还是没flag。。。。
看了一下WP,原来是图片末尾有这么一块:
在这里插入图片描述

可以看到c t f s h o w,隔一个字符取一个,写一个脚本跑出来:

a="631A74B96685738668AA6F4B77B07B216114655336A5655433346578612534DD38EF66AB35103195381F628237BA6545347C3254647E373A64E465F136FA66F5341E3107321D665438F1333239E9616C7D"

flag=""
for i in range(0,len(a),4):
    hexStr=a[i:i+2]
    flag+=chr(int("0x"+hexStr,16))
print(flag)


Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐