ctf秀misc入门【42-45】详解

misc42

flag有多长?2cm……不好意思打错了,41位
这里的题目涉及到长度,先用bless查看图片信息,发现有很多IDAT块,根据提到的“flag有多长”,用tweakpng打开图片,得到IDAT块的长度
在这里插入图片描述
将长度截取下来,用十进制转字符复制长度即可得到flag

ctfshow{078cbd0f9c8d3f2158e70529f8913c65}

misc43

错误中隐藏着通往正确答案的道路
linux下图片发现打不开是crc错误,看提示信息使用pngdebugger
下载:pngdebugger

下载解压之后,进去debug文件夹,在文件位置输入cmd,进入命令行,如图。
在这里插入图片描述
我把图片放在这个位置了
在这里插入图片描述
命令行:

pngdebugger …/…/misc43.png

发现crc错误的信息,根据题目意思,应该是crc中藏在flag,将错误的crc由十六进制转成字符串即可看到flag。
在这里插入图片描述
附:在上述命令加上> 1.txt可将显示的内容生成文本模式。

pngdebugger …/…/misc43.png > 1.txt

在这里插入图片描述

前几个字符存在中文,可以忽略。在这里插入图片描述

ctfshow{6eb2589ffff5e390fe6b87504dbc0892}

pngdebugger的下载参考自这里,致敬。

misc44

错误中还隐藏着坑
和上题一样,使用pngdebugger,发现错误有很多,直接导成文本看看

pngdebugger …/…/misc43.png > 1.txt

生成很多行文本,试了试几个错误的,发现太多了,转换失败,换个思路看看,查看文本内容,发现1152这个特殊的数字,把其他没有1152的开头和结尾删除再进行转换,把ok的段落内容转成1,把错误的转成0,这里借用大佬的代码

f=open("2.txt","r")
s=f.read()
f.close()
flag=""
for i in s.split():
    if "OK!" == i:
        flag += "1"
    elif "FAILED" ==i:
        flag += "0"
print(flag)
#输出1和0的字符串
print(len(flag))
#每八个一组,43组,转化成字符串
for i in range(43):
    print(chr(int(flag[8*i:8*(i+1)],2)),end="")

可能是文本删除多了,不过不影响正确答案。

ctfshow{cc1af32bf96308fc1263231be783f69e}

misc45

有时候也需要换一换思维格式
解压是一个png图片,用bless查看表头和内容,没发现什么异常,使用binwalk,什么也没有。
再看标题,“格式”,换一种图片格式试一下,图片常见格式有png,jpg,gif, bmp。
看一下bmp的介绍:

BMP可以分成两类:设备相关位图(DDB)和设备无关位图(DIB),使用非常广。它采用位映射存储格式,除了图像深度可选以外,不采用其他任何压缩,因此,BMP文件所占用的空间很大。BMP文件的图像深度可选lbit、4bit、8bit及24bit。BMP文件存储数据时,图像的扫描方式是按从左到右、从下到上的顺序。由于BMP文件格式是Windows环境中交换与图有关的数据的一种标准,因此在Windows环境中运行的图形图像软件都支持BMP图像格式。

将图片由png转为bmp,网站可以在此
使用binwalk看看里面有什么,发现有flag.png。把flag.png搞出来。
命令如图:

在这里插入图片描述
得到flag

ctfshow{057a722a5587979c34966c2436283e70}
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值