Known-plaintext attack¶
Keynote¶
Cracking ZIP files
You need to have one of the original files that compress in the encrypted archive
Tools¶
pkcrack
binarywalk
dd ( Linux command )
strings
My observation¶

看起來就是一張很可愛的Pusheen圖片,沒什麼頭緒,用file 看也很正常是張圖片。
用strings 看一下
meow/UT
[Wux
meow/flagUT
[Wux
meow/t39.1997-6/UT
[Wux
meow/t39.1997-6/p296x100/UT
[Wux
meow/t39.1997-6/p296x100/10173502_279586372215628_1950740854_n.pngUT
疑,目錄結構(? 看起來這圖片檔裏面應該藏了一個壓縮檔
binwalk 看一下
DECIMAL HEXADECIMAL DESCRIPTION
--------------------------------------------------------------------------------
0 0x0 PNG image, 296 x 279, 8-bit/color RGBA, non-interlaced
41 0x29 Zlib compressed data, compressed
48543 0xBD9F Zip archive data, at least v1.0 to extract, name: meow/
48606 0xBDDE Zip archive data, encrypted at least v2.0 to extract, compressed size: 51, uncompressed size: 47, name: meow/flag
48740 0xBE64 Zip archive data, at least v1.0 to extract, name: meow/t39.1997-6/
48814 0xBEAE Zip archive data, at least v1.0 to extract, name: meow/t39.1997-6/p296x100/
48897 0xBF01 Zip archive data, encrypted at least v2.0 to extract, compressed size: 48404, uncompressed size: 48543, name: meow/t39.1997-6/p296x100/10173502_279586372215628_1950740854_n.png
97912 0x17E78 End of Zip archive, footer length: 22
哦,ZIP耶
unzip一下
> unzip -l meow.png
Archive: meow.png
warning [meow.png]: 48543 extra bytes at beginning or within zipfile
(attempting to process anyway)
Length Date Time Name
--------- ---------- ----- ----
0 2016-06-11 16:22 meow/
47 2016-06-11 16:22 meow/flag
0 2016-06-11 16:20 meow/t39.1997-6/
0 2016-06-11 16:21 meow/t39.1997-6/p296x100/
48543 2014-05-14 05:59 meow/t39.1997-6/p296x100/10173502_279586372215628_1950740854_n.png
--------- -------
48590 5 files
Bingo~百分百在圖片後面藏的是ZIP檔啦,連ZIP前面有多少bytes是圖片data都告訴你了XD
而且看到meow/t39.1997-6/p296x100/10173502_279586372215628_1950740854_n.png 這張圖片的大小竟然也是48543,擺明的就是要我們用Known-plaintext attack
所以我們要先取得原檔,試著將圖片分離出來
dd if=meow.png of=mymeow.png bs=48543 count=1
取得原圖片檔之後,將圖片壓縮
zip plaintext.zip mymeow.png
用binwalk把藏在裏面的zip檔拉出來
binwalk -e meow.png
之後就可以看到裏面有個zip檔啦,算一下bytes大小,原圖就是這個拉出來的zip + mymeow.png
最後使用pkcrack
pkcrack -C BD9F.zip -c "meow/t39.1997-6/p296x100/10173502_279586372215628_1950740854_n.png" -P plaintext.zip -p "mymeow.png" -d decrypted.zip -a
成功拿到flag~
Reference¶
[1] : Binary walk https://github.com/devttys0/binwalk/wiki/Quick-Start-Guide
[2] : pkcrack https://www.hackthis.co.uk/articles/known-plaintext-attack-cracking-zip-files
[3] : AIS3 2015 writeup : http://joyhuang9473.github.io/post-ctf/2015/07/27/ais3-writeup-misc2.html