buuctf(misc):喵喵喵


喵喵喵

下載附件后,發現是一張貓的圖片,日常先用16進制編輯器去瞧瞧有啥線索......,然而並沒有,那應該就不需要用工具去分離圖片了,不放心的話也可以去試試。 然后再用工具stegslove打開,瞧瞧有啥線索。果然有秘密。在rgb的0通道里可以發現一絲不正常                                                                       

                                                                       

應該就是LSB隱寫了,打開Data Extract模式查看,並提取。

                                                                          

 

另存為1.png,發現並不能打開,繼續16進制編輯器打開,發現文件頭前一部分還有一些數字刪去即可。png的文件頭是89504e47

                                                                

 

保存后發現是一個只有上半部分的二維碼,首先想到的是修改圖片的高度,看是否能否得到下半部分

                                                                     

圖片寬和高不一樣,將高度修改為和寬一樣,然后保存就得到了二維碼。

                                                                                                                 

准備去掃,卻發現顏色被 置反了(用 stegsolve異或一下),掃二維碼。不過好像現在的軟件已經很給力了,在線掃或者手機掃,都可以掃出來.

                                                                                                  

 

給了一個網址https://pan.baidu.com/s/1pLT2J4f,從網盤下載flag.rar。以為終於結束了,但是事實並沒有那么簡單。。。。。。

 

太過分了吧,然后就沒有然后了。到了這一步已經不會了,去看看大佬的writeup

果然我還是菜鳥,這里涉及了NTFS文件隱寫,相關知識可以查看大佬博客https://blog.csdn.net/qq_41079177/article/details/102964134。利用利用NtfsStreamsEditor軟件去提取隱藏文件。(這一步我一直提取失敗,沒搞懂為什么,后來發現下載的壓縮包用WinRAR解壓才可以提取到隱藏的文件,據大佬說流隱寫得用WinRAR解壓)

 

好不容易找到了隱藏的pyc文件利用Pyc反編譯在線網站進行反編譯:https://tool.lu/pyc/

反編譯出加密腳本

#!/usr/bin/env python
# visit https://tool.lu/pyc/ for more information
import base64

def encode():
flag = '*************'
ciphertext = []
for i in range(len(flag)):
s = chr(i ^ ord(flag[i]))
if i % 2 == 0:
s = ord(s) + 10
else:
s = ord(s) - 10
ciphertext.append(str(s))

return ciphertext[::-1]

ciphertext = [
'96',
'65',
'93',
'123',
'91',
'97',
'22',
'93',
'70',
'102',
'94',
'132',
'46',
'112',
'64',
'97',
'88',
'80',
'82',
'137',
'90',
'109',
'99',
'112']

寫一個解密腳本,獲得flag

ciphertext = ['96', '65', '93', '123', '91', '97', '22', '93', '70', '102', '94', '132', '46', '112', '64', '97', '88',
'80', '82', '137', '90', '109', '99', '112']
ciphertext = ciphertext[::-1]
flag = ''
for i in range(len(ciphertext)):
if (i % 2 == 0):
a = int(ciphertext[i]) - 10
else:
a = int(ciphertext[i]) + 10
a = i ^ a
flag = flag + chr(a)
print(flag)

 


免責聲明!

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



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