文章目錄
- 簽到題
- 你猜猜flag
- Snake
- Tiga
- Hack K
前言
首先恭喜
白帽子社區團隊成功舉辦第一屆BMZCTF公開賽,我是本次比賽MISC賽題Snake、Tiga的出題人末初
以下是我寫的這次BMZCTF公開賽的MISC賽題的Writeup,如果有什么寫的不對的還請師傅們留言斧正
另外師傅們對于Snake、Tiga賽題有疑問的可以留言,我會及時回復
簽到題


BMZCTF{W3lc0me_T0_2020BMZCTF}
你猜猜flag

flag.exe,binwalk分析發現有附加zip資料,foremost分離出來

flag.exe只有輸入4的時候輸出的zip密碼與其他的號碼不同

分離出來的zip壓縮包密碼為:ZmxhZ+WlveWDj+WPr+S7peeMnOWHuuadpQ==

解壓,再mdb檔案中找到flag

flag{D1d y0u 8u3ss?}
Snake

難度:中下
考察知識點:Short Ook!、程式逆向還原、Steghide、Serpent加密、二進制資料轉二維碼

注釋里面是Short ook!編碼

得到snake.zip的密碼:doyoulikesnake?
解壓得到三個檔案

process是個py程式,添加后綴,然后打開
data_jpg = open('data.jpg','wb')
def file_encode():
with open('snake.jpg','rb') as handle:
i = 1
while True:
bytedata = handle.read(1)
if(bytedata == b''):
exit()
process_data = data_encode(bytedata)
data_write(process_data)
i = i + 1
def data_encode(bytedata):
data = int.from_bytes(bytedata,byteorder='big')
if (data % 2 == 0):
data = (data + 1) ^ 128
else:
data = (data - 1) ^ 128
data = bytes([data])
return data
def data_write(process_data):
data_jpg.write(process_data)
if __name__ == '__main__':
file_encode()
data_jpg.close()
通程序式可以得知data.jpg是process.py處理snake.jpg得到的,逆向撰寫處理代碼
with open('snake.jpg','wb') as flag:
with open('data.jpg','rb') as f:
for i in f.read():
if (i % 2 == 0):
i = (i + 1) ^ 128
else:
i = (i - 1) ^ 128
i = bytes([i])
flag.write(i)
得到snake.jpg

使用stegsolve打開,發現提示

Serpent加密,嘗試尋找key
Steghide發現有隱寫key.txt,無密碼

key: VivaLaVida
知道了是Serpent加密,也知道了key,那么data應該就是加密后的資料,直接解密
Serpent-Online-Encrypt:http://serpent.online-domain-tools.com/

下載解密后的資料,發現內容如下:

然后從以下幾點看出這是個二維碼的二進制資料:
- 只有
w和b兩種字符,二進制 w對應white,b對應black- 總字符
200 x 200 = 40000正方形,可能是張二維碼 - 做過二進制轉二維碼題目的同學從內容的首尾都是
w字符,就應該看得出這是個二維碼資料
使用Python將這些轉換為二維碼
import PIL
from PIL import Image
width=height=200
img = Image.new("RGB",(width,height))
i = 0
char = "這里填資料"
for w in range(width):
for h in range(height):
if (char[i]=='w'):
img.putpixel([w,h],(255,255,255))
else:
img.putpixel([w,h],(0, 0, 0))
i = i + 1
img.save('flag.png')
掃描即可得到flag

flag{67bd09fc-e252-4c21-858f-2a7d698d555f}
Tiga

難度:中下
考察知識點:零寬度字符隱寫、CRC爆破、zip密碼爆破、zip密碼明文攻擊、位元組流資料還原、Base16/32/64/85混淆解碼
vim查看tiga.txt發現存在零寬度字符

零寬度字符隱寫在線站:https://yuanfux.github.io/zero-width-web/

得到misc.zip密碼:GiveTiGaGuang!
迪迦.jpg檔案尾附加了youcanalso.zip的密碼資訊
file.zip的密碼很明顯需要通過爆破這些密碼片段檔案的CRC得到內容

爆破腳本如下:
import binascii
import string
def crack_crc():
print('-------------Start Crack CRC-------------')
crc_list = [0x14433530, 0xaf251007, 0xd554e7b6, 0xebb3156, 0xbb474d49, 0x2cb8a39b, 0x75fe76f0]
comment = ''
chars = string.printable
for crc_value in crc_list:
for char1 in chars:
for char2 in chars:
for char3 in chars:
res_char = char1 + char2 + char3
char_crc = binascii.crc32(res_char.encode())
calc_crc = char_crc & 0xffffffff
if calc_crc == crc_value:
print('[+] {}: {}'.format(hex(crc_value),res_char))
comment += res_char
print('-----------CRC Crack Completed-----------')
print('Result: {}'.format(comment))
if __name__ == '__main__':
crack_crc()

得到file.zip密碼:T&hg%WL0^rm@c!VK$xEt~
解壓得到youcanalso.zip根據之前的得到的資訊,使用ARCHPR掩碼爆破十位數字

得到密碼:2001701725
解壓得到flag.zip和youcanalso.zip

這里很明顯可以進行明文攻擊

得到flag.zip密碼: 1amT1G@得到flag.txt,打開發現通過觀察頭和尾的內容是zip檔案的的位元組流資料

將位元組流寫成zip檔案,腳本如下:
import struct
a = open("flag.txt","r")#十六進制資料檔案
lines = a.read()
res = [lines[i:i+2] for i in range(0,len(lines),2)]
with open("data.zip","wb") as f:
for i in res:
s = struct.pack('B',int(i,16))
f.write(s)
得到data.zip發現是doc檔案的內容

修改后綴為得到data.docx,打開發現是base85資料
注意:后兩頁是隱藏文字,需要開啟隱藏文字查看選項才能發現
將這個base85資料解了一下發現是:base16/32/64/85的隨機套娃編碼
這里可以通過寫個識別腳本通過識別base16/32/64/85進行逐步解碼,也可以手工,因為這里設定的編碼次數不多,就15次
PS:本來是想設定的編碼次數多一點的,不過我比較懶,不想寫識別腳本2333
不過推薦使用basecrack這個工具直接解碼最快:https://github.com/mufeedvh/basecrack
python .\basecrack.py --magic
然后輸入編碼資料,得到flag

flag{8fa3e8c4-0121-4f2a-a7f0-0a60032e3763}
Hack K

這題其實我也和出題的師傅商量過
flag最后的存放檔案名
flag.php太過平常(應該改復雜點),用平常做web的思路,目錄掃描一掃就出

訪問即可得到flag

首先觀察了這個網站,唯一可以想到出題方向的就是這幾張圖片了,下載下來發現其中一張圖片容量非常大

binwalk分析圖片有附加別的資料

foremost直接分離,得到一個壓縮包,有密碼

根據壓縮包注釋提示使用ARCHPR爆破,得到密碼flag

得到一個好像是二維碼定位符的png圖片

以及一大堆gif圖片和檔案,其中很容易發現safe (113).gif中有張好像沒有定位符的二維碼

二維碼取出來

使用PS修補一下

訪問flag.php得到flag

flag{Zme12a9rqsk123S14RH}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/241856.html
標籤:python
