BUUCTF-Misc(141-150)

Muneyoshi發表於2024-06-14

[MRCTF2020]小O的考研複試

image-20240610205836936

flag = 0
for i in range(19260817):
    flag = (flag * 10 + 2) % 1000000007

print(flag)
flag{577302567}

真的很雜

參考:

BUUCTF 真的很雜_buuctf class.dex-CSDN部落格

BUUCTF-真的很雜 - 「配槍朱麗葉。」 (hatenablog.com)

沒啥思路,binwalk直接提取,發現好像是安卓的東西

image-20240610210708417

然後是安卓逆向,我們下載工具,反編譯Releases · skylot/jadx (github.com)

image-20240610212107745

然後我們給classes.dex拖進去反編譯

image-20240610212427876

找到flag,然後爆破這個a和b,前一個字母,後一個數字(我也不知道怎麼爆破)

flag{25f991b27fcdc2f7a82a2b34386e81c4}

[GKCTF 2021]FireFox Forensics

參考:[瀏覽器取證 - GKCTF 2021]FireFox Forensics - 《CTF 刷題總結》 - 極客文件 (geekdaxue.co)

根據題目應該是瀏覽器取證,第一次接觸,下載指令碼lclevy/firepwd: firepwd.py, an open source tool to decrypt Mozilla protected passwords (github.com)

然後給這兩個附件放到這個指令碼的目錄下

image-20240610213259982

然後開啟終端

python ./firepwd.py logins.json

image-20240610213347495

GKCTF{9cf21dda-34be-4f6c-a629-9c4647981ad7}

[RCTF2019]disk

參考:[記憶體取證 - RCTF2019]disk(BUUCTF) - 《CTF 刷題總結》 - 極客文件 (geekdaxue.co)

之前遇見過vmdk這個檔案,使用7z解壓出來,得到一個0.fat

image-20240610213957137

然後搜了搜fat就是磁碟

image-20240610214051035

然後這題少了提示說是,我們應該去下載VeraCrypt這個 工具

img

然後我們先在010editor裡面開啟這個0.fat找到一段flag

image-20240610214609513

rctf{unseCure_quick_form4t_vo1ume

然後我們把0.fat掛載起來,這裡需要輸入密碼,密碼就是rctf

image-20240610214901891

然後開啟發現

image-20240610215035856

RCTF2019

這是一個容易忽視的點。那就是在掛載的時候,不同的密碼可以進入不同的檔案系統,所以我們需要重新掛載,然後掛載完打不開,開啟就必須要你格式,然後這裡就只能用winhex去開啟這磁碟,010editor不行

最後的flag

flag{unseCure_quick_form4t_vo1ume_and_corrupted_1nner_v0lume}

[MRCTF2020]搖滾DJ(建議大聲播放

我擦,聽了一下附件,腦子爆掉了,聽起來是之前做過SSTV,用kali開啟qsstv,直接命令列輸入,沒安裝的先去搜一下怎麼安裝的

主要記得這裡需要設定成from file

image-20240610220708582

然後給音訊丟進去,就出圖片了

image-20240610220726670

flag{r3ce1ved_4n_img}

[GWCTF2019]huyao

下載下來是兩張一樣的圖片

image-20240610220943478

先試試盲水印,發現不對

image-20240610221132731

但是在這裡,B神的工具PuzzleSolver還有頻域盲水印,牛逼壞了,直接解出來

image-20240610221358172

得到flag

image-20240610221426837

flag{BWM_1s_c00l}

[GUET-CTF2019]520的暗示

參考:BUU MISC 刷題記錄(三) - 雲千 - 部落格園 (cnblogs.com)

我們瞭解到是微信dat檔案解密,網上找了指令碼bugku:FileStoragedat;微信dat檔案的解密_filestorage解密-CSDN部落格

#微信dat檔案解密
import base64
import struct,binascii
def getDat():
    dic={0xFFD8:"JPG",0x8950:"PNG",0x424D:"BMP",0x4749:"GIF",0x504B:"ZIP",0x5261:"RAR",0x4156:"AVI"}
    li=list(dic.keys())
    with open("photo.dat","rb")as f:
        data=f.read(2)
        data=str(binascii.b2a_hex(data))[2:-1]
        data=int(data,16)
        for i in li:
            j=hex(i ^data)
            if(j[2:4]==j[4:6]):
                key=j[0:4]
                print("key:",key)
                tail=dic[i]
                print("檔案格式為:",tail)
                break
        f.seek(0,0)
        with open("result."+tail,'wb')as out:
            for now in f:
                for nowByte in now:
                    by=nowByte^int(key,16)
                    out.write(bytes([by]))


#主函式
if __name__ == '__main__':
    print("/*Begin*\\")
    getDat()

然後就得到一個jpg的圖片

image-20240610222450172

然後根據WP所說去找基站

image-20240610222625926

最後flag就是

flag{桂林電子科技大學花江校區}

[XMAN2018排位賽]file

參考:

[BUUCTF:XMAN2018排位賽]file-CSDN部落格

先用volatility分析一下,沒有分析出來

image-20240611222347100

然後他是linux的一個映象

image-20240611222410687

我們先建立一個目錄,然後給他掛載起來,然後去到那個目錄檢視一下

image-20240611222528295

這裡有個檔名字是lost+found ,暗示我們找回失掉的檔案,然後我們就可以取消掛載了umount /mnt/test

然後我們這裡需要用到extundelete這個工具,我們可以先安裝一下

sudo apt install extundelete

安裝完畢後,我們恢復所有檔案

extundelete attachment.img --restore-all

image-20240611223404130

然後同級目錄下會生成一個資料夾,裡面有被恢復的檔案

image-20240611223448318

flag{fugly_cats_need_luv_2}  

我愛Linux

然後題目說linux,我拖到虛擬機器看看exiftool,cat,file什麼的都沒得到什麼有用的資訊

我們010editor開啟檔案,發現了 FF D9也就是jpg檔案尾部,然後後面跟了一大堆不知道什麼的資料

image-20240614164930472

然後我們給他提取出來

image-20240614165415450

然後我們反序列化一下

import pickle 
 
fp = open("1","rb+")      ''' 開啟序列化檔案 '''
fw = open('pickle.txt', 'w')  ''' 開啟儲存檔案 '''
a=pickle.load(fp)             ''' 反序列化檔案編譯 '''
pickle=str(a)                 ''' 轉換成字串要不然不能儲存 '''
fw.write( pickle )            ''' 寫入檔案 '''
fw.close()                    ''' 關閉檔案 '''
fp.close()                    ''' 關閉檔案 '''

得到座標值

image-20240614170941146

然後再轉換

fw = open("pickle.txt","r")
text=fw.read( )
i=0
a=0


while i<len(text)+1:
    if(text[i]==']'):
       print('\n')
       a=0
    elif(text[i]=='('):
        if(text[i+2]==','):
            b=text[i+1]
            d=text[i+1]
            b=int(b)-int(a)
            c=1
            while c<b:
                print(" ", end="")
                c += 1
            print(text[i+5], end="")
            a=int(d)
        else:
            b=text[i+1]+text[i+2]
            d=text[i+1]+text[i+2]
            b=int(b)-int(a)
            c=1
            while c<b:
                print(" ", end="")
                c += 1
            print(text[i+6], end="")
            a=int(d)
    i +=1

image-20240614171159035

flag{a273fdedf3d746e97db9086ebbb195d6}

[SCTF2019]Ready_Player_One

往上面衝過去就有

image-20240614172145221

flag{You_Are_The_Ready_Player_One!!!For_Sure!!!}