CTF-web Xman-2018 msic習題
xman misc
CRC碰撞 4位元組小檔案
下載下來的是一個壓縮包,裡面是很多小的壓縮包,每個檔案只有四位元組,滿足CRC爆破。
使用指令碼,將碰撞出來的拼接在一起
# coding:utf-8 import zipfile import string import binascii def CrackCrc(crc): for i in dic: for j in dic: for p in dic: for q in dic: s = i + j + p + q if crc == (binascii.crc32(s) & 0xffffffff): f.write(s) return def CrackZip(): for I in range(54): print I file = 'chunk' + str(I) + '.zip' f = zipfile.ZipFile(file, 'r') GetCrc = f.getinfo('data.txt') crc = GetCrc.CRC # 以上3行為獲取壓縮包CRC32值的步驟 # print hex(crc) CrackCrc(crc) dic = string.ascii_letters + string.digits + '+/=' f = open('out.txt', 'w') CrackZip() f.close()
得到字串,base64。
解碼需要本地的,網上的不好用,得到一個壓縮檔案,需要密碼
使用ziperell爆破,得到密碼。這個題目的密碼比較簡單,直接爆破就行
二維碼
這是一張png圖片,使用Stegsolve觀察平面
發現二維碼,但是顏色反了,使用ps反相就可以。
掃描二維碼得到16進位制資料串,轉碼hex-》ascii,得到的資料頭識別出pyc檔案,儲存為a.pyc
使用python執行
python
import a //匯入該檔案
dir(a) //列出內容 發現flag函式
a.flag() //呼叫函式 顯示FLAG
dexyoryed png
這是一個被破壞的png,使用010開啟,修復檔案頭
點選Templates選項--Online Template Repository下載
點選Templates選項-NEW Templates開啟模板,會出現下圖所示命令列
按F5,即使用對應的模板檢視
對於沒有安裝的,使用如下順序,選擇對應指令碼安裝就可以
我們發現了很多的錯誤資料
將所有錯誤資料拼接到一起,再解碼就得到了flag。
MP4結合影象,並隱藏資訊
這是一個視訊檔案,使用foremost xxx.xxx進行分解,得到一個奧利奧影象和視訊。
視訊簡介中有資訊
解碼之後是一個網站
http://steghide.sourceforge.net/
那麼我們檢視分解出來的影象,是被加密的,應該就是這個演算法的,解密需要密碼,使用指令碼破解
linux安裝法子:
apt-get install steghide
windows安裝:
開啟https://sourceforge.net/projects/steghide/ 下載steghide-0.5.1-win32.zip,解壓後就可以用。
//用AAPR(Advanced Archive Password Recovery)軟體裡的 english.dic作為這次破解需要的字典檔案
//我們也可以使用別的
# -*- coding: utf8 -*-
#author:pcat
#http://pcat.cnblogs.com
from subprocess import *
def foo():
stegoFile='rose.jpg'
extractFile='hide.txt'
passFile='english.dic'
errors=['could not extract','steghide --help','Syntax error']
cmdFormat='steghide extract -sf "%s" -xf "%s" -p "%s"'
f=open(passFile,'r')
for line in f.readlines():
cmd=cmdFormat %(stegoFile,extractFile,line.strip())
p=Popen(cmd,shell=True,stdout=PIPE,stderr=STDOUT)
content=unicode(p.stdout.read(),'gbk')
for err in errors:
if err in content:
break
else:
print content,
print 'the passphrase is %s' %(line.strip())
f.close()
return
if __name__ == '__main__':
foo()
print 'ok'
pass
得到密碼為password,得到資訊
foremost powpow.mp4 //分離視訊
stepic -i output/png/00001069.png -d > thing //再次分離圖片
steghide extract -sf thing.jpg -p password //提取資訊
cat base64.txt //顯示得到的檔案
python3
>>> import base64 //解碼
>>> base64.b85decode(b'W^7?+dsk&3VRB_4W^-?2X=QYIEFgDfAYpQ4AZBT9VQg%[email protected]|fWgua4Wgup0ZeeU}c_3kTVQXa}eE')
b'flag{We are fsociety, we are finally free, we are finally awake!}'
藍芽流量包
首先我們可以判斷這個流量包是藍芽檔案傳輸用的包,所以猜測flag應該在傳輸的檔案裡。
用wireshark開啟以後,直接按照包大小,對資料包排個序,我們可以看到這部分資料包是一個png圖片拼接起來的,這是第一個流量包的資訊,包含png頭,前邊多了一塊的檔名,後面的包就是純資料了,將所有資料拼接在一起儲存為png即可。
記住:儲存的時候是複製hex流,然後在notepad+裡轉碼為ascii在儲存。
合併幾個檔案用命令
cat a.txt b.txt > c.txt
或者
cat a.txt b.txt >> c.txt
區別就是第一個建立檔案或者截斷檔案.第二個是追加到檔案末尾(檔案不存在建立了).
得到flag
你不知道的檔案個密碼大集合
首先我們下載附件~
我們直接拖進Kali Linux裡面去看看,然後發現檔案變成LZO檔案了
我們用binwalk看看,果然是個LZO檔案,Google一查知道這是個壓縮檔案
然後我們把檔名給改下,改成.lzo吧
然後這時候我們需要解壓這個資料夾,我們可能需要安裝解壓命令lzop
apt-get install lzop
然後lzop -dv task_aaa.lzo解壓壓縮包
這時候我們就可能不知道從何處下手了,回到之前的壓縮檔案看看?
我們用010 Editor看看
我們看到了一個Base32編碼
我們解碼試試看
我們可以看到解出來的是RFC4042,這是一種檔案的格式,我們Google找一下就知道,這裡涉及到一個utf9編碼,所以我們開始寫個指令碼解碼
#coding utf-8
import utf9
utf9_file = open('task_aaa','rb')
utf9_data = utf9_file.read()
decoded_data = utf9.utf9decode(utf9_data)
print(decoded_data)
decoded_file = open('decoded','w')
decoded_file.write(decoded_data)
decoded_file.close()
然後解出來了一個decode檔案
跑出來了一大坨的玩意,這個東西你可以參考官方文件:https://www.sec.gov/Archives/edgar/data/1304421/000117184318002029/0001171843-18-002029.txt
看了官方文件以後你就知道,我們需要改檔案頭和檔案尾
我們直接在檔案頭加上begin 777 key.jpg
檔案尾加上end即可
然後其實你對編碼有了解的人就知道,這是一個uuencode編碼,這個用網上的線上解碼工具也可以,我就直接用Linux裡面的uuencode工具解碼
安裝命令如下:
apt-get install sharutils
uudecode -o flag.txt decoded
我們用010Editor看看,我們可以很清楚的看到,FFD8FFE0開頭,很明顯是個jpg圖片,我們只需要把檔名改成,jpg檔案即可~
flag如下: