zoukankan      html  css  js  c++  java
  • 杂项 zlib

    1 题目

    https://files.cnblogs.com/files/ainsliaea/timu.zip
    zip 中的图片即为原题。

    2 题目分析

    给了一张图片,还提示用 binwalk。
    那就 binwalk 看一下,里面有个 zlib,而且是 best compression。
    image

    zlib 不同压缩方式对应的文件头:

    文件头 压缩方式
    78 01 No Compression/low
    78 9C Default Compression
    78 DA Best Compression

    binwalk -e 分离,得到 29 和 29.zlib 两个文件。

    分别在 010Editor 打开,78 DA 是 zlib Best Compression 的文件头。29.zlib 正是以 78 DA 开头,没发现什么有价值的内容。
    但是 29 并不是以 78 DA 开头,搜索 78 DA 可以发现其中包含一个 zlib 文件。
    image

    复制 78 DA 开头的这部分十六进制内容,用 python 进行解压,代码参考自这里[1]

    import zlib
    import binascii
    
    id = '78DA955059AE033108BB92096B8E93F5FE47289369D5D78F57A94804C9011BA3900E86A001E838B14AC0BAB841597A58B11BA776D7EC060DC0CC8691B9AA0A6AE25C62BB1435D41D5775F538AC04D99AEF9926B969FA54479BABA8D858BE060DAAC494C3C48EA89B8BA42A43277590B5A408B69E780CC5C65E439BAC42532F1F39F3DFCEE79F5068A5DB5FBD06DE717B4093A017F47107FD7B87EFFECF4E0AFBE0CE94A7B63FFBAE7E996CCC4EB2C42E25A952982D24455C99855979F27C00613B670A'
    result = binascii.unhexlify(id)
    print(result)
    result = zlib.decompress(result)
    print(result)
    

    查看结果,第二行是一个 zip(50 4B),复制到 010Editor 并新建一个 zip。
    image

    里面最后有段 base64,但没解出来有意义的内容。
    查看压缩包,里面有一个加密的 flag 文件,压缩包备注正是刚才看到的那个 base64,尝试当作密码解压,得到 flag。flag{PnG_zLiB_dEc0mPrEsS}

    3 总结

    能根据 zlib 不同的压缩方式识别对应的文件头,并掌握利用 python 解压 zlib 的方法。

    Over。


    1. https://blog.csdn.net/qq_40574571/article/details/80164981 ↩︎

  • 相关阅读:
    Arduino开发版学习计划--直流电机
    Arduino开发版学习计划--蜂鸣器
    社交网络编程API之iOS系统自带分享
    iOS解析XML实现省市区选择
    Frameworks(不定时更新)
    NSLayoutConstraint
    Categories  VS Extensions (分类 vs 扩展)
    strong vs copy
    折半查找
    Block
  • 原文地址:https://www.cnblogs.com/ainsliaea/p/15780903.html
Copyright © 2011-2022 走看看