Bugku-MISC-奇怪的png图片

考察知识点

CRC32爆破

图片尺寸修复

解题步骤

第一步

题目信息:

img

第二步

解题过程

1、binwalk查看是否有其他文件

img

2、图片里隐藏了压缩包,foremoet提取出来

img

3、看到这几个文件便猜到需要进行CRC32爆破了

img

4、首先爆破前三个4bytes文件,使用以下脚本,得到文件内容

Awsd2021mzy0

import binascii
import string

def crack_crc():
    print('-------------Start Crack CRC-------------')
    crc_list = [0x1D9F11E5, 0xE3A35EED, 0x694AEF57]#文件的CRC32值列表,注意顺序
    comment = ''
    chars = string.printable
    for crc_value in crc_list:
        for char1 in chars:
            for char2 in chars:
                for char3 in chars:
                    for char4 in chars:
                        res_char = char1 + char2 + char3 + char4#获取遍历的任意4Byte字符
                        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()

5、爆破6bytes文件

附上神器:6位CRC32爆破

img

6、这里得到的内容不唯一,注意到文件名为“图片真实crc32”,所以 图片真实crc32.txt 的CRC32应该是图片的真实CRC32

用010editor后者winhex打开图片,修改CRC32

img

7、将修改CRC32后的图片放入tweakpng,发现报错,证明图片尺寸被修改了

img

8、用脚本计算一下png图片的真实高度和宽度

import os
import binascii
import struct

crcbp = open("00000000.png", "rb").read()    #打开图片
for i in range(2000):
    for j in range(2000):
        data = crcbp[12:16] + \
            struct.pack('>i', i)+struct.pack('>i', j)+crcbp[24:29]
        crc32 = binascii.crc32(data) & 0xffffffff
        if(crc32 == 0x59f1d4be):    #图片当前CRC
            print(i, j)
            print('hex:', hex(i), hex(j))

img

得到一张带二维码的图片,扫码可知pass4为crc32爆破出90开头那一个 即9070yo

img

第三步

获得flag

此时获得了完整flag.txt的密码

Awsd2021mzy09070yo

img

Flag

flag{Pn9_Crc32_b2ut3_f0rce}

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值