Bugku CTF---where is flag 2

题目

在这里插入图片描述
压缩包内容为:
在这里插入图片描述

解题步骤

crc32爆破悬崖勒马

15个6字节大小的txt文件,以一个misc老鸟的经验来看,应该是crc32爆破,然后将爆破的值拼接起来作为解压密码,解压取出图片,flag就在图片里面。
取出所有txt文件的crc32值。

6275676B
757B596F
755F6361
6E27745F
696D6167
696E655F
7468655F
68617070
696E6573
735F6F66
5F686964
696E675F
7468655F
666C6167
2121217D

逐一进行crc32爆破
在这里插入图片描述
爆破爆到一半,突然发现了一个问题。首先每爆破一个crc32值就会有15种可能的值,我们只取其中一个值作为正确的值,所以15轮爆破下来,能得到正确的值的可能性为15^15次方。作为misc神,Tokeii不可能出这种跑cpu的垃圾题目,所以咱得换个思路。

剖析Tokeii的出题思路

重新审视一下题目

hint:这次有什么不一样呢?

联想到where is flag 系列第一题的考点size和hint:每个文件都不一样。不妨做一个猜想,与文件的属性值有关。于是乎拼接一下txt的文件名,
得到:123456789ABCDEF,这是标准的16进制格式。难道说与16进制有关?,16进制从哪获取呢。
在这里插入图片描述
在这里插入图片描述

灵光一闪,芜湖,最开始拿到的CRC32值不就是16进制格式的嘛。用Python写个16进制转字符串脚本试试

#by  :3tefani丶zhou
#time:2021/12/2

key = '6275676B757B596F755F63616E27745F696D6167696E655F7468655F68617070696E6573735F6F665F686964696E675F7468655F666C61672121217D'
flag=''
for i in range(0,len(key),2):
    hex_str = key[i:i+2]
    int_str = int('0x'+hex_str,16)
    int_str = int_str % 128
    flag += chr(int_str)

print(flag)

run一下脚本,拿到flag。

Tokeii的出题思路果然不是常规misc思路,不能靠之前的经验去下定论,得多花点脑子好好思考一下。
在这里插入图片描述
细细思量一下Tokeii的出题思路,where is flag系列考点应该无关文件内容,主要在于打开压缩包文件的属性上,第一次是size(文件大小),第二次是name(文件名)+CRC32,我猜第三次是modified(文件修改时间)。
在这里插入图片描述

bugku{You_can't_imagine_the_happiness_of_hiding_the_flag!!!}

【人心不是水中月,月会常来水常在,人容易老心易变,人心再难是少年。】

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值