bugkuCTF—雜項—貓片(安恆)


 

 

根據題目提示

可以判斷出來出來這很可能是一個LSB的圖片隱寫,下載下來

很明顯是一個png的圖片文件,只是被刪掉了后綴名,我們將它補上

 

根據題目提示我們直接打開stegsolve的圖片數據信息提取

根據題目提示我們選擇LSB和BGR

 發現了里面隱藏了一張圖片png我們將其提取出來,保存的格式bin(txt格式用winhex和010Editor打開都是亂碼),然后我們修改文件的后綴為png,然后發現圖片打不開,用winhex打開

 

發現了並不是我們預期的png文件頭,PNG (png)的正常的文件頭:89504E47,所以們將他前面的FFFF刪掉保存退出。

 

額  半張二維碼@@,CRC值出錯,很明顯是高度出錯引起的

這個時候我們用一個py腳本算出正確的寬度和高度

 1 import os  2 import binascii  3 import struct  4 crcbp = open("999.png","rb").read() #文件名  5 for i in range(1024):  6     for j in range(1024):  7         data = crcbp[12:16] + struct.pack('>i',i) + struct.pack('>i',j) + crcbp[24:29]  8         crc32 = binascii.crc32(data) & 0xffffffff
 9         if crc32 == 0x08ec7edb: #當前的CRC值 10             print i,j 11             print "hex",hex(i),hex(j)   #輸出寬度和高度

在有python環境的kali下面跑一下腳本

 

在winhex里面修改保存即可。

發現一個問題這個二維碼和我們平時見到的不太一樣,正常正方形中間應該是黑色的。所以還要用畫圖工具進行反色

 

反色后的圖片用QR二維碼掃一下

 發現一個百度雲鏈接,我也是醉了,還沒出來 - -

 打開鏈接下載一個壓縮包

mmp  flag竟然不在里面,真TM。。。無語。。現在呢??我無從下手了  ,開始參考網上大佬的wp

度娘搜了下,發現另一位老鐵寫的writeup

https://www.jianshu.com/p/abc44c54857a

最后根據hint里面的提示“NTFS”,根據大佬的說法,這是一種流隱寫,需要用到工具

ntfstreamseditor,然而。。這里還有一個坑就是,這壓縮文件一定要用winrar來解壓才會產生這樣的效果

 

 接着用ntfstreamseditor,查看解壓的文件夾里面的數據流,然后把他導出來,而且更可惡的是解壓的時候必須使用的是winrar來解壓(我是在win7的虛擬機里面做的,

我也不知道win10為什么不能不能掃出來@@)

不然的話掃不出文件夾里面的數據流,,真的是坑爹到了極致@@

得到一個pyc文件,也就是py編譯后的文件,因此需要扔到網上去在線反編譯一下

這里推薦一個網站,可以反編譯py,   https://tool.lu/pyc/

根據他這個加密的腳本再寫出一個解密的腳本,運行一下就可以得到flag了

 

 1 def decode():  2     ciphertext = [  3     '96',  4     '65',  5     '93',  6     '123',  7     '91',  8     '97',  9     '22', 10     '93', 11     '70', 12     '102', 13     '94', 14     '132', 15     '46', 16     '112', 17     '64', 18     '97', 19     '88', 20     '80', 21     '82', 22     '137', 23     '90', 24     '109', 25     '99', 26     '112'] 27  ciphertext.reverse() 28     flag = ''
29     for i in range(len(ciphertext)): 30         if i % 2 == 0: 31             s = int(ciphertext[i]) - 10
32         else: 33             s = int(ciphertext[i]) + 10
34         s=chr(i^s) 35         flag += s 36     return flag 37  
38 def main(): 39     flag = decode() 40     print(flag) 41  
42 if __name__ == '__main__': 43     main()

拿到這個網上去跑一下就出來了

吐槽一番:

我只能想吐一口血在出題人臉上 ,沒寫過py,這個腳本和還是參考網上大佬寫的,好剛嘎,剛剛那個軟件ntfstreamseditor也是花了很長時間才找到的,網上這種軟件都快絕種了。。這個題目解題的一個轉折點就是從數據流中提取出來那個已經編譯過的py程序,我們需要拿去反編譯,

然后呢?就是要看得懂這個加密腳本了,再然后呢,就是寫解密腳本了,這個是真的沒寫過@@,一波三折,   +寫博客=花了4個小時 -   感覺dei找個時間去學一下py --人生苦短,我用python。


免責聲明!

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



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