ctfshow-Misc入门图片篇(1-34)

misc1

签到题下载下来解压打开就能发现flag
在这里插入图片描述

misc2

下载下来发现是个TXT文件,打开发现是个乱码文件,然后查看文件头如下图
在这里插入图片描述
发现是PNG文件的文件头,我们只需要修改文件后缀flag就出来了修改后缀为.png然后打开图片flag就出来了

misc3

下载文件下来发现是一个bpg文件打不开,我们用在线网站打开,然后下载文件
软件下载
在这里插入图片描述
软件不能直接打开使用,如图命令操作然后flag就能出来了,如下图
在这里插入图片描述

misc4

下载压缩包解压之后发现是一堆txt文件并且打开全是乱码,看样子全是图片,可以把所有文件的后缀全部改成png的后缀然后flag,最好在1-6拼接出来即可
但是看了完整WP,应该依次顺序是 png、jpg、bmp、gif、tif、webp 的后缀

图片篇(信息附加)

misc5

直接使用Winhex打开在图片末尾出现flag如下图所示
在这里插入图片描述

misc6

和上个题差不多,用txt打开或者其他文本文档打开都可以我这里是使用Notepad++打开然后ctrl+f搜索的如下图
在这里插入图片描述

misc7

和misc6做法一样

misc8

拖入Winhex或者010edit或者其他软件,往下面发现图片里面隐藏了PNG图片,我们可以手动分离出来或者直接使用binwalk或者foremost
在这里插入图片描述
下面是使用Kali里面的foremost分离出来,然后直接打开图片就可以了
在这里插入图片描述

misc9

和misc6的做法一样,如下图
在这里插入图片描述

misc10

三板斧binwalk或者foremost如下图
命令是

binwalk -e 文件

在这里插入图片描述

misc11

发现用了上面的办法没有一个有用的时候就要想想是否是自己知识太少了,是的是我知识太少了,然后看了WP是要使用一个叫做TweakPNG的工具,然后来删除IDAT块,然后另存为另外一个图片flag就出来了,下面这个链接是工具下载链接

工具下载链接

下载好软件之后,如下图所示把图片拖进去删除第一个IDAT数据块,然后ctrl+shift+s另存为另外一张新的png图片就出来了flag
在这里插入图片描述
在这里插入图片描述

misc12

看了一眼题目提示“flag在另一张图里面"
想的是应该和上一题解题思路一样,因为按照之前的方法做不出来,然后打开了 TweakPNG
发现了,这个图片有很多很多个IDAT数据块,需要删掉前面8个IDAT块才能出来flag如下图
在这里插入图片描述

misc13

题目提示是说flag在末尾,发现根本没有flag,说来也好笑,我是对flag敏感看见了一个"{"花括号我以为是flag结果看起来长得真的是flag如下图
在这里插入图片描述
仔细观察了一下好像是有那么ctfshow的字眼,最后是发现的是隔了一位字符每隔一位选一个字符就是ctfshow,然后写了python代码,代码如下

s = "631A74B96685738668AA6F4B77B07B216114655336A5655433346578612534DD38EF66AB35103195381F628237BA6545347C3254647E373A64E465F136FA66F5341E3107321D665438F1333239E9616C7D"
flag = ""
for  i in range(0, len(s), 4):
    flag += s[i]
    flag += s[i + 1]
print(flag)

个人解释一下代码,有错请指正
flag=""定义了一个空的字典

一个循环从0开始到len(s)的长度,len()是获取的是s的长度信息,step是4

在16进制里面两个字节等于的是一个字符比如"63"等于的是c,所以下面有两个flag+=

第一个flag += 是获取的是第一位的信息,第二个就是第二位

比如第一个flag += s[i],第一次循环,i下标是6然后i+1下标是1然后就是3就获取到了第一位字符是63也就是c

step是4刚好跳过了63和74中间的两个字符1A,所以第二次循环获取到的是74,以此内推

最终跑出来是:63746673686F777B61653665336561343866353138623765343264376465366634313266383339617D

然后HEX解码最终结果是

ctfshow{ae6e3ea48f518b7e42d7de6f412f839a}

misc14

看见题目提示是"在那张图里面",想了一下应该不是IDAT了,应该是binwalk所以用binwalk或者foremost

但是呢,发现用binwalk -e 不行用foremost还是不行但是binwalk检测就是有文件如下图
在这里插入图片描述
看样子应该是另外一张JPG图片了,手扣试试,JPG图头文件一般是FFD8

这里我使用的工具是010edit如下图所示,直接ctrl+f搜索16进制FFD8,看了一下

其实是有三个FFD8头的第一个头肯定是原本图片的头,第二个FFD8和右边的字符对比了一下没有JFIF开头盲猜不是

第三个就有了,直接复制FFD8到最后FFD9保存为另外一张jpg图片
在这里插入图片描述
最终flag如下图
在这里插入图片描述

misc15

直接用winhex打开或者其他查看文本打开就能发现flag

我以为越到后面越难,想不到居然这么简单,绝了!

在这里插入图片描述

misc16

用Winhex打开没啥可发现的东西,用binwalk发现了东西参数binwalk -e 文件

分离出文件,在DD4里面,简单

flag如下图
在这里插入图片描述

misc17

用winhex然后binwalk查看了没啥发现的,然后用到了一个新东西叫做zsteg

简单用法就是zsteg 文件

基本上能发现隐藏数据如下图,发现了隐藏数据在extradata:0
在这里插入图片描述
然后使用zsteg -e " extradata:0 " misc17.png > ./1.txt
就生成了一个带有数据的txt文件最后用binwalk -e分离出来即可,拿到flag
在这里插入图片描述

misc18

看题目提示的是 flag在标题、作者、照相机和镜头型号里

这里用到了一个新命令叫做exiftool,用来查看图片的各种信息,比如拍摄地点,什么软件,时间,作者,等等之类的

这个工具不是kali自带的工具,先要下载

输入命令:apt-get install exiftool

如果下载失败报错是没有依赖,如下图
在这里插入图片描述
输入: sudo apt install libimage-exiftool-perl

然后在输入:apt-get install exiftool一般能OK

直接使用exiftool 文件就能看见一堆信息,找到有价值的信息如下图
在这里插入图片描述
按照 标题、作者、照相机和镜头 排序
最终flag如下

ctfshow{325d60c208f728ac17e5f02d4cf5a839}

misc19

题目提示的是 flag在主机上的文档名里

和上题一样使用exiftool 文件名

如下图所示
在这里插入图片描述
最终flag是如下

ctfshow{dfdcf08038cd446a5eb50782f8d3605d}

misc20

解题思路和misc19和18差不多

提示是flag在评论里面,我们发现如下图
在这里插入图片描述
发现是谐音, 最终flag是

ctfshow{c97964b1aecf06e1d79c21ddad593e42}

misc21

提示的是 flag在序号里 ,应该和其他题是一样的,如下图

但是感觉和正常的flag不一样,看着像HEX编码,我们转字符试试
在这里插入图片描述
在线转换网站是👉 在线16进制转字符

转换之后如下图

提示是hex(x&y)意思是转码x和y
在这里插入图片描述
仔细找了找发现,发现有四个符合要求了的
在这里插入图片描述
在Python里面有个hex()函数可以自动将16进制转换成字符串

如下这个代码很简单,因为hex输出前面会自动输出0x

[2:]的作用是删除前面的0x,“+”是把字符连接起来

print('ctf{'+hex(3902939465)[2:]+hex(2371618619)[2:]+hex(1082452817)[2:]+hex(2980145261)[2:]+'}')

misc22

其他方法都不出来看了WP发现这题是 thumbnail 隐写

命令是:exiftool -ThumbnailImage -b misc22.png > 123.txt
在这里插入图片描述
我眼睛都快看瞎了这个黄色真的难看,然后最终FLAG是

ctfshow{dbf7d3f84b0125e833dfd3o80820a129 

misc23

下载下来文件发现是PS的.psd文件

Winhex和Binwalk都没啥用,直接用exiftool查看了一下如下图

东西太多了,懒得看
在这里插入图片描述
使用命令如下,查找里面是否有ctfshow的内容

exiftool misc23.psd | grep ctfshow

还真有
在这里插入图片描述
显示是History Action这行,于是我找了一下找到了,然后还发现了一句话,如下图

红色箭头的那句话的意思是说,转换时间戳,然后来获取flag

绿色箭头是要转换的时间把这些转换成时间戳
在这里插入图片描述
在线时间戳转换网站👉时间戳转换

转换过后最终得到的是

874865822 | 2699237688 | 2156662245 | 460377706

然后根据上面的经验把这些数字转换成字符串用Python的hex()函数,代码如下

print('ctf{'+hex(874865822)[2:]+hex(2699237688)[2:]+hex(2156662245)[2:]+hex(460377706)[2:]+'}')

然后最终的flag如下

ctf{3425649ea0e31938808c0de51b70ce6a}

misc24

提示是:flag在图片上面

使用010edit来修改高度

可以使用python的hex函数来转换FA对应的是250的数字
PS:说个小技巧可以把高度转换城16进制然后在搜素对应位置,在把修改好的数据填入保存
最终flag:ctfshow{dd7d8bc9e5e873eb7da3fa51d92ca4b7}
在这里插入图片描述

misc25

同Misc24

如下图最终flag

ctfshow{494f611cc5842dd597f460874ce38f57}

在这里插入图片描述

misc26

根据提示,就无脑把高度拉高就对了,但是要真正的高度
在这里插入图片描述真正的高度需要我们跑脚本

真正的高度是606,16进制是25e
代码如下

import binascii
import struct

crcbp = open("misc26.png", "rb").read()
for i in range(2000):
    for j in range(2000):
        data = crcbp[12:16] + struct.pack('>i', i)+struct.pack('>i', j)+crcbp[24:29]
        crc32 = binascii.crc32(data) & 0xffffffff
        if(crc32 == 0xEC9CCBC6):
            print(i, j)
            print('hex:', hex(i), hex(j))

最终flag是:ctfshow{94aef125e087a7ccf2e28e742efd704c}

misc27

和misc24一样

最终flag为

ctfshow{5cc4f19eb01705b99bf41492430a1a14}

在这里插入图片描述

misc28

和上面一样,可能不一样的就是需要用预览图打开或者StegSolve打开

最终flag是

ctfshow{59c8bc525426166b1c893fe12a387fd7}

在这里插入图片描述

misc29

是个GIF,和上面一样修改高度

只不过我是把每一帧的高度都修改了,因为一帧一帧改了又去看太麻烦了

得到flag:ctfshow{03ce5be6d60a4b3c7465ab9410801440}
在这里插入图片描述

misc30

根据提示把宽度改成950就可以了,还是用010edit软件

得到flag:ctfshow{6db8536da312f6aeb42da2f45b5f213c}
在这里插入图片描述

misc31

这种需要计算出高度,先要了解bmp文件格式

参考文章

图片放入010edit,从第一个ff开始
在这里插入图片描述
然后一直复制到最后除了00 00不要复制,因为那个是用来补位的
在这里插入图片描述
所以全部加起来是487253个字节
在这里插入图片描述
然后得到487253是全部数据,减去文件头的数据53个
在这里插入图片描述
所以用(487253-53)/3/150,舍去余数就是1082

除以三是获取的像素值,在来除以高度150就能得到真正的宽度

修改宽度为1082

得到flag:ctfshow{fb09dcc9005fe3feeefb73646b55efd5}
在这里插入图片描述

misc32

获取CRC E14A4C0B

和misc26一样用脚本跑这个png文件

跑出来是宽度是1044

然后在010edit修改宽度为1044即可
在这里插入图片描述
在这里插入图片描述
代码如下

import binascii
import struct

crcbp = open("misc32.png", "rb").read()
for i in range(2000):
    for j in range(2000):
        data = crcbp[12:16] + struct.pack('>i', i)+struct.pack('>i', j)+crcbp[24:29]
        crc32 = binascii.crc32(data) & 0xffffffff
        if(crc32 == 0xE14A4C0B):
            print(i, j)
            print('hex:', hex(i), hex(j))

得到flag

misc33

获取图片CRC

0x5255A798
在这里插入图片描述
在这里插入图片描述
还是一样用Python老跑出他的高度和宽度
在这里插入图片描述
下面是Python代码

import binascii
import struct

crcbp = open("misc33.png", "rb").read()
for i in range(2000):
    for j in range(2000):
        data = crcbp[12:16] + struct.pack('>i', i)+struct.pack('>i', j)+crcbp[24:29]
        crc32 = binascii.crc32(data) & 0xffffffff
        if(crc32 == 0xE14A4C0B):
            print(i, j)
            print('hex:', hex(i), hex(j))

把宽度修改成978,宽度修改成142就可以了

获得flag:ctfshow{03070a10ec3a3282ba1e352f4e07b0a9}
在这里插入图片描述

misc34

提示: 出题人狗急跳墙,把IHDR块的CRC也改了,但我们知道正确宽度肯定大于900

使用脚本跑

代码如下

import zlib
import struct
filename = "misc34.png"
with open(filename, 'rb') as f:
    all_b = f.read()
    #w = all_b[16:20]
    #h = all_b[20:24]
    for i in range(901,1200):
        name = str(i) + ".png"
        f1 = open(name,"wb")
        im = all_b[:16]+struct.pack('>i',i)+all_b[20:]
        f1.write(im)
        f1.close()

跑出来一堆图片,一看,一堆黑色图片里面有一个白色
在这里插入图片描述
得到flag:ctfshow{03e102077e3e5de9dd9c04aba16ef014}
在这里插入图片描述

  • 12
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值