雜項 - 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 ↩︎


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM