ctfshow-misc50


 

 文件下載地址   https://www.lanzoui.com/i98c7zg

打開后是一張圖片,在kali中使用foremost命令分離出一張圖片和一個壓縮包

用010打開圖片,在圖片的末尾發現一串字符

Sk5DVlM2Mk1NRjVIU1gyTk1GWEgyQ1E9Cg==

先base64解密,在base32解密得到

KEY{Lazy_Man}

打開壓縮包發現提示

GEZDGNBVGYFA====

base32解密后得到密碼 

123456

打開txt里面的內容,是一堆數字。且3078重復出現。轉為16進制就得到3078是0x

那么使用腳本,進行批量轉換。得到一堆0x 0x的文本。

又發現字符串0x37 0x7a,發現37 7a 是7z壓縮包的文件頭。

那么思路來了:批量刪除0x,轉換為7z文件。

先上批量刪除0x的代碼

 

import re def read_file(filepath): with open(filepath) as fp: content=fp.read(); return content number = read_file('thienc.txt') result = [] result.append(re.findall(r'.{2}', number)) result = result[0] strings =''
for i in result: y = bytearray.fromhex(i) z = str(y) z= re.findall("b'(.*?)'",z)[0] strings += z b= strings.split('0x') strings=''
for i in b: if len(i) ==1: i= '0' + i strings +=i with open('te.txt', 'w') as f: f.write(strings)

 

將得到的te.txt文本中的內容以16進制復制到010中打開並保存為1.7z

打開發現需要密碼,那么之前得到的密碼就有了用處

KEY{Lazy_Man}

 輸入密碼得到一大串內容,結尾發現==,一次base64解密后還有=

 

 

 

猜想有多次的base解密

直接上代碼

import base64 import re def read_file(filepath): with open(filepath) as fp: content=fp.read(); return content url = read_file('secenc.txt') #url1= re.findall("b'(.*?)'",url) #url=url1[0]
url = base64.b64decode(url) print(url) with open('test1.txt', 'w') as f: f.write(str(url))

 

第一次解密需要將

#url1= re.findall("b'(.*?)'",url) #url=url1[0]

注釋掉,因為一開始的密文是沒有 ‘,而運行腳本后有了

第二次運行腳本代碼如下

import base64 import re def read_file(filepath): with open(filepath) as fp: content=fp.read(); return content url = read_file('test1.txt') url1= re.findall("b'(.*?)'",url) url=url1[0] url = base64.b32decode(url) print(url) with open('test2.txt', 'w') as f: f.write(str(url))

以此反復進行base32,base64解密。

最終經過16次的混合解密得到 test16.txt

 

 使用記事本的替換功能,把 \n替換成空格

在線brain fuck/Ook!解密

先 Ook! to Text

 

然后再 Brainfuck to Text,得出flag

 

 flag

flag{Welc0me_tO_cTf_3how!}

 


免責聲明!

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



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