2021年江西省網絡安全大賽初賽MISC:extractall(循環解壓+斐波那契腦洞)


解題思路

在附件里面的文件長這樣:
image
首先點開hint.txt
發現,直接告訴了解壓包密碼是前一個解壓包的名字。
image
(這句話用南昌話說更帶味)
解壓之后,發現還是有壓縮包,於是這可能就是雜項固定的套路之一——循環解壓
image
但是在解壓之前,要思考,題目的名字是什么意思?
百度一下,發現,extractall是python解壓庫里面的一個函數名:
image
extractall是一個函數,能夠解壓文件,傳入路徑,文件名和密碼就能使用
但是遇到的錯誤是,密碼必須經過編碼,也就是后面需要加上一個encode()
因為python3不自動支持ascii碼了,extractall要求輸入的是字節類型

所以使用腳本:

import zipfile

name = '[REFTQ.zip'
for i in range(100):
    f = zipfile.ZipFile(name , 'r')
    f.extractall(pwd=name[:-4].encode())
    name = f.filelist[0].filename
    print(name[:-4],end="")
    f.close()

image
可以明顯,看出,在解壓名后面有個==,很可能是base64編碼
嘗試進行解碼:
image
image
可以解碼一部分,那肯定有一些是多余的,我們要去掉
暫且先放在這
解壓后可以得到flag.txt文件,以及一張圖片
打開flag.txt,可知答案不在這里
image
打開圖片extractall.png
下面一半很顯然被截取
image
使用winhex對圖片的高進行加長:
在winhex中,從第16位開始,每4位就是圖片的寬和高的值
image
直接把1改成2,如圖
image

得到內容:
image
它是哪個?識圖一下:
image
斐波那契。
斐波那契數列是1、1、2、3、5、8、13、21,剛剛好到21
聯想到之前的base64解碼,我們的第一,第二,和第21的碼都可以解出來,唯獨中間的碼不能解,猜想,可能需要按照斐波那契數列提取編碼
按照斐波那契提取出來后,進行解碼,得到了flag
image

總結

問題 方法
腳本寫不出來 嘗試回歸題目尋找信息,上面使用extractall可能就是需要搜索這個信息的
base64解碼遇到亂碼 如果是部分解碼成功,那肯定在編碼中需要增加或者刪去什么,部分解碼成功的編碼要多加思考,找到規律
png隱寫 最一般的是隱寫長寬,然后還有像素、二維碼、lsb、兩圖片合成、binwalk等等

這題腦洞比較大吧


免責聲明!

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



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