1. 程式人生 > >CTF-web Xman-2018 msic習題

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如下: