http://bmzclub.cn/challenges#533

BMZCTF:533_文件名


password000000000-999999999.zip

根据文件名提示,使用ARCHPR爆破password000000000-999999999.zip密码为9位数

BMZCTF:533_与运算_02


压缩包密码为:548751269得到533.zip

BMZCTF:533_ci_03


很明显可以直接通过CRC爆破文件内容,因为内容很小,但是这里1.txt5字节的,2.txt3.txt3字节的,这个需要注意下,我们先把2.txt3.txt的内容爆破出来,利用我的这篇文章中的三字节爆破脚本:javascript:void(0)

import binascii
import string

def crack_crc():
    print('-------------Start Crack CRC-------------')
    crc_list = [0xeac5c577, 0x1aa8db2b]#文件的CRC32值列表,注意顺序
    comment = ''
    chars = string.printable
    for crc_value in crc_list:
        for char1 in chars:
            for char2 in chars:
                for char3 in chars:
                    res_char = char1 + char2 + char3#获取遍历的任意3Byte字符
                    char_crc = binascii.crc32(res_char.encode())#获取遍历字符的CRC32值
                    calc_crc = char_crc & 0xffffffff#将遍历的字符的CRC32值与0xffffffff进行与运算
                    if calc_crc == crc_value:#将获取字符的CRC32值与每个文件的CRC32值进行匹配
                        print('[+] {}: {}'.format(hex(crc_value),res_char))
                        comment += res_char
    print('-----------CRC Crack Completed-----------')
    print('Result: {}'.format(comment))

if __name__ == '__main__':
    crack_crc()

BMZCTF:533_与运算_04


这样其实直接可以猜测1.txt的内容是flag{,但是我们还是要利用脚本测试下,因为是五字节的,所以要直接爆破出来难度太大,适当缩小取值范围,脚本如下

import binascii
import string

def crack_crc():
    print('-------------Start Crack CRC-------------')
    crc_list = [0x05dec988]#文件的CRC32值列表,注意顺序
    comment = ''
    chars = 'abcdefghijklmnopqrstuvwxyz\{\}'
    for crc_value in crc_list:
        for char1 in chars:
            for char2 in chars:
                for char3 in chars:
                    for char4 in chars:
                        for char5 in chars:
                            res_char = char1 + char2 + char3 + char4 + char5#获取遍历的任意5Byte字符
                            char_crc = binascii.crc32(res_char.encode())#获取遍历字符的CRC32值
                            calc_crc = char_crc & 0xffffffff#将遍历的字符的CRC32值与0xffffffff进行与运算
                            if calc_crc == crc_value:#将获取字符的CRC32值与每个文件的CRC32值进行匹配
                                print('[+] {}: {}'.format(hex(crc_value),res_char))
                                comment += res_char
    print('-----------CRC Crack Completed-----------')
    print('Result: {}'.format(comment))

if __name__ == '__main__':
    crack_crc()

BMZCTF:533_与运算_05

flag{CRC32}