2020安恒杯元旦月赛-爆破鬼才-ZIP注释信息+CRC32爆破+outguess隐写爆破+生日字典

3 篇文章 0 订阅

题目来源:2020安恒杯元旦月赛
题目名称:爆破鬼才
题目考点:ZIP注释信息+CRC32爆破+outguess隐写爆破+生日字典

给出的是一个压缩包,压缩包中有注释信息,注释信息给出了解压密码的范围:
在这里插入图片描述
使用ARCHPC爆破即可得到密码:abc123
解压之后里面又是一个压缩包,压缩包里面包含几个文件:
在这里插入图片描述
使用010 Editor查看具体信息之后发现360压缩给出的文件大小其实是不准确的,1.txt、2.txt、3.txt压缩前的大小分别为4 bytes、2 bytes、2 bytes,因此可以用CRC32碰撞破解这三个文件的内容,三个文件的内容组合起来便是压缩包的解压密码:Blowitup(下面给出了CRC32碰撞破解2.txt、3.txt的脚本,破解1.txt的脚本类似,只是字节数不同)

# -*- coding:utf-8 -*-
import binascii

def crack():
    crcs = set([0xA28E7734, 0x4394EE70])

    r = xrange(32, 127)
    for a in r:
        for b in r:
            txt = chr(a)+chr(b)
            crc = binascii.crc32(txt)
            if (crc & 0xFFFFFFFF) in crcs:
                print txt

if __name__ == "__main__":
    crack()

除去作为解压密码的文件,还有hint.txt和Ziggs.jpg两个文件:
hint.txt文件的内容是:guess out my birthday
因此猜测是outguess隐写,密码需要通过生日字典爆破:

from os import system
from calendar import monthrange

year = 2012
month = 1
day = 1

key = ""

def inttostr(a, n):
    ret = str(a)
    while len(ret) < n:
        ret = '0' + ret
    return ret

def getNextKey():
    global key
    global year
    global month, day
    if key == '20200101':
        return 0
    day = day + 1
    if day > monthrange(year, month)[1]:
        day = 1
        month += 1
        if month > 12:
            month = 1
            year += 1
    key = str(year) + inttostr(month, 2) + inttostr(day, 2)
    return 1
    
def main():
    while getNextKey():
        cmd = "./outguess/outguess -k " + key + " -r Ziggs.jpg -t ./output/" + key +".txt"
        system(cmd)
    
if __name__ == "__main__":
    main()

因为outguess无法判断是否解密成功,但是我们知道flag文件大小应该是几十个字节,因此可以先把所有的结果计算出来,然后按大小排序,最后人工筛选。
当key = '20140224’的时候得到flag:flag{8322e7eed667c69f27ecbea5f96d86ca}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值