• CRC碰撞


    循环冗余效验(Cyclic Redundancy Check, CRC)
    是一种根据网络数据包或电脑文件等数据产生简短固定位数校验码的一种散列函数,主要用来检测或校验数据传输或者保存后可能出现的错误。它是利用除法及余数的原理来作错误侦测的。

    原理:

    循环冗余校验同其他差错检测方式一样,通过在要传输的k比特数据D后添加(n-k)比特冗余位(又称帧检验序列,Frame Check Sequence,FCS)F形成n比特的传输帧T,再将其发送出去。
    校验码格式 校验码格式
    特别的,循环冗余校验提供一个预先设定的(n-k+1)比特整数P,并且要求添加的(n-k)比特F满足:
    T mod P == 0 ……(1)
    T = 2n-kD + F …… (2)
    基于上述要求,实际应用时,发送方和接收方按以下方式通信:
    1、发送方和接收方在通信前,约定好预设整数P
    2.、发送方在发送前通过(1)和(2)式确定并填充F,然后发送。
    3、 接收方收到数据,进行 result = T mod P 运算,当且仅当result = 0时接收方认为没有差错。
    发送方在发送数据前需要确定填充的(n-k)比特F

      ——原理摘自百度百科

     
     xman Misc-1
    题目:
     
    1、特征
    • 一般有很多zip的压缩包,
    • 解压需要密码,且密码复杂,不可爆破
    • 每个包很小,仅几k
     
    2、思路
    由于文件很小只几个字节,可以对其中的内容进行穷举,穷举后计算crc并与原文件的crc码对比。
     
    3、writeup
    将压缩包解压发现有很多chunkX.zip文件,并且里面都有data.txt文件。解压需要密码,尝试爆破发现不成功。发现每个文件极小只几k,进行crc碰撞。
    脚本:
    #coding:utf-8
    import zipfile
    import string
    import binascii
     
    def CrackCrc(crc):
        for i in dic :
            for j in dic:
                for p in dic:
                    for q in dic:
                        s=i+j+p+q
                        if crc == (binascii.crc32(s) & 0xffffffff):
                            print s   
     
    def CrackZip():
        for I in range(54):
            file = 'chunk' + str(I) + '.zip'
            f = zipfile.ZipFile(file, 'r')
            GetCrc = f.getinfo('data.txt')
            crc = GetCrc.CRC
            #以上3行为获取压缩包CRC32值的步骤
            CrackCrc(crc)

    dic = string.ascii_letters + string.digits + '+/='
    CrackZip()

    碰撞得出每个文件的内容,如下:
     
    UEsDBBQDAQAAAJFy1kgWujyNLwAAACMAAAAIAAAAZmxhZy50eHT/xhoeSnjMRLuArw2FXUAIWn8UQblChs4AF1dAnT4nB5hs2SkR4fTfZZRB56Bp/FBLAQI/AxQDAQAAAJFy1kgWujyNLwAAACMAAAAIAAAAAAAAAAAAIIC0gQAAAABmbGFnLnR4dFBLBQYAAAAAAQABADYAAABVAAAAAAA=
    发现是base64解码,但解码出现乱码,勾选结果以16进制显示,并保存为zip格式。
     
    解压后还是要密码,用Ziperello爆破,得密码。
     
     
    flag{i_z1pp3d_a_zip_w1th_sum_zips}
     
     
  • 相关阅读:
    angular $apply()以及$digest()讲解1
    AngularJs + Bootstrap
    angular service讲解
    末班方法代码实战和总结
    JS基础学习1——什么是基础js类和原型?
    背景图片background-size兼容ie8以下浏览器解决
    magento2 客户端模式less样式修改。
    git贡献代码流程
    React模板
    获取iframe src中参数
  • 原文地址:https://www.cnblogs.com/xdjun/p/9416064.html
Copyright © 2020-2023  润新知