ctfshow学习记录-misc入门(图片篇-文件结构45-49)


misc45

提示:有时候也需要换一换思维格式
解答:常规做法没有发现信息,题目提示换个格式,之前我们做的题目里除了png,还有:bmp、jpg、gif。大概率是bmp,因为bmp的数值存储方式和排序和其他的都不太一样。

用windows自带的画图软件打开,另为存为bmp格式。
再用binwalk分离得到了flag。
在这里插入图片描述
在这里插入图片描述
ctfshow{057a722a5587979c34966c2436283e70}


misc46

提示:你见过扶乩吗
解答:打开gif图片后,发现图片在不断的位移,可以考虑这些偏移地址提取出来,看看是否有用。用identity提取gif的信息存储到一个txt文件里。

identify misc46.gif > 46.txt
在这里插入图片描述

写段代码把偏移提取出来,并按照gnuplot需要的格式存放到一个txt文件里。
(buuctf里的梅花香之苦寒来也是个画图题,有兴趣的可以看一下。)

arr=[]
with open('46.txt','r') as file:
    for i in file.readlines():
        content_list=i.split(' ')
        arr.append(content_list[3][8:].replace('+',' '))
with open('46_point.txt','w') as result:
    for i in arr:
        result.write(i+'\n')
#print(arr)

可以在kali里安装个gnuplot。用它画图。
sudo apt-get install gnuplot
在这里插入图片描述

垂直反转就是flag,图片不是很清晰,需要调整一下宽度和大小。ctfshow{05906b3be8742a13a93898186bc5802f}
在这里插入图片描述

(emmm为什么说扶乩呢?做完题也不理解)


misc47

提示:没见过扶乩,那你知道笔仙吗
解答:和36题类似。直接打开png图片是空白的,用浏览器打开发现和misc46一样是个不断位移的图片,是apng。

可以用TweakPNG看一下,但是它好像只能直接修改图片,没有提供导出这些信息的功能。
在这里插入图片描述

写个脚本提取一下。可以看到这个偏移地址都在fcTL中。
在这里插入图片描述

先用010导出一下文件十六进制格式。
在这里插入图片描述

存储后变成这个格式:
在这里插入图片描述

把空格和换行替换为空。
在这里插入图片描述

接下来就是开始写脚本啦~

with open('47.txt','r') as file:
    content=file.read()
    content_list=content.split('6663544C')[1:]
with open('47_point.txt','w') as result:
    for i in content_list:
        result.write(str(int(i[8*3:8*4],16))+' '+str(int(i[8*4:8*5],16))+'\n')

再用gnuplot工具画个图就ok了,记得垂直翻转。
ctfshow{6d51f85b45a0061754a2776a32cf26c4}
在这里插入图片描述


misc48

提示:附件的第(Di)七(Qi)题(Ti)中有提示。本题略脑洞,可跳过
解答:图片用010打开,发现有提示。
统计FF的数量,减1。ctfshow{32个字符}
在这里插入图片描述

这提示指的是连续的FF的长度-1。
在这里插入图片描述

接下来就是用眼瞪,或者各种替换操作之后再写脚本统计。

比如参照misc48先把十六进制数据导出。然后:
---->回车替换为空格
---->FF替换为XX
---->然后正则匹配替换[^X| ](这样整个文档只剩下XX和一堆空格)
---->再把连续的两个空格替换为回车
---->单个空格置空
---->回车再转为GG。(各种替换疯狂操作,能直接替换绝不写脚本,哈哈哈哈)
接下来就可以用了

text="太长了就不放上来了"
list=text.split('GG')
for i in list:
    a=len(i)//2-1
    if(a>=0):
        print(str(hex(a))[2:],end='')

在这里插入图片描述

最后的flag就是:ctfshow{0cb07add909d0d60a92101a8b5c7223a}
在这里插入图片描述


misc49

提示:它们一来就是十六种。本题略脑洞,可跳过
解答
用010打开发现有很多色块,都是FFE开头。
(emmm提示和wp是怎么联系起来的,这脑洞是我不配了。。)
具体就是提取FFE后面的那个字符。
在这里插入图片描述

导出图片的十六进制格式,然后把回车和空格置空另存一下。
在这里插入图片描述

最后再写个小脚本获取一下flag。

with open('misc49.txt','r')as file:
    content=file.read()
    content_list=content.split('FFE')[1:]
result=""
for i in content_list:
    result+=i[:1]
flag="ctfshow{"+result.lower()[:32]+'}'
print(flag)
#ctfshow{0c618671a153f5da3948fdb2a2238e44}
  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值