攻防世界新手練習題_MISC(雜項)

寫這篇博客的目的
對於CTF中的Misc來說,做題經驗顯得十分重要,而做題經驗的獲得很大一部分取決於刷題量。為了避免大家在刷題過程到處搜WriteUp浪費時間,現在把我的一些做題方法分享出來,希望對大家有幫助。當然,大家有更好的解決方法歡迎在評論區留言,互相學習,共同進步。
解題過程
1. this is flag
點開這個題目直接顯示flag
2.ext3
a.把文件放進虛擬機,使用命令
strings linux | grep flag
在linux這個文件中搜索flag字符串
發現存在flag.txt文件,ext3文件是一種Linux日志文件,所以把它掛載到linux系統上
把這個文件掛載到mnt目錄,然后進入此目錄,使用ls列出所有文件,查看flag
mount linux /mnt cd /mnt ls cd 07avZhikgbf/ cat flag.txt
linux操作截圖
b.得到flag.txt中是base64編碼的。使用
base64 -d flag.txt
解碼
3.give_you_flag
a.附件為一個gif
b.放入stegsolvs一幀一幀的查看一下(stegsolve中analyse下的frame browser)
c.發現二維碼
4.pdf
a.根據提示說圖片下面什么都沒有,懷疑圖片下面隱藏着另一個圖層
b.把pdf放進linux中,隱藏的部分鼠標會有變化,把它選中
c.flag就出現了
5.SimpleRAR
a.得到壓縮包后打開得知壓縮包內用文件頭損壞
損壞的是一個圖片,並且發現里面還有一個flag.txt
b.打開這個txt
並沒有搞頭,目光聚集到這個損壞的png上
c.查資料得知被壓縮后的png頭為A8 3C 74,在winhex中查找一下這個png頭,看看有沒有改變
d.發現壓縮包中文件頭是A8 3C 7A
e.修改7A為74。
f.成功解壓出圖片,但是發現是一個白色的圖片。根據提示是ps雙圖層,把它放入ps中分離圖層,后綴為png但是拖入ps的過程中被提示這不是一個png文件。在2345看圖王中打開發現存在兩個幀,那么這就是一個gif了,改后綴為gif
g.然后把它拖入ps中
把這兩個圖層分別保存
f.保存后把這個純白的圖片放入stegsolve中。發現兩個圖中都可以發現半個二維碼,剩下的工作就是把兩個二維碼拼接成一個二維碼
g.

但是第二塊二維碼定位點缺失,只要第一個二維碼中的定位點補過去就可以
f.補圖+掃描

6.堅持60s
a.下載下來是一個.jar
b.看文件類型,這就需要看出這個程序的基本的對象,就要用到java反編譯器,這里使用jd-gui
c.
7.gif
a.下載附件后打開發現是一些黑白圖片 b.一共104塊,104÷8=13,也就剛好是13個八位的二進制數 c.白色為0,黑色為1,依靠手輸肯定是行不通的。附上一個python腳本 from PIL import Image flag_dic="" for i in range(0,104): img = Image.open("F:\\ctf文件\\b3ba561080fb4a9d9c1f019e298e218b\\gif\\%d.jpg"%i) clrs = img.getcolors() #clrs 包含 [("num of occurences","color"),...] if clrs == [(46656, (12, 12, 0))]: flag_dic += "1" else: flag_dic += "0" print(flag_dic) flag = "" for q in range(int(len(flag_dic)/8)): flag += chr(int(flag_dic[q*8:(q+1)*8],2)) print(flag)
腳本的話是自己寫的,比較菜,師傅們可以交流一下,咱們共同進步。代碼邏輯比較簡單,有疑問的可以評論區留言。
利用這個python腳本可以直接獲得flag。
原理就是黑色代表1,白色代表0,然后是8個為一組的二進制。轉換為字符串就是flag了。
8.掀桌子
a.初步判定是十六進制直接轉換
b.發現不行
c.將ascii碼減去128轉換
string="c8e9aca0c6f2e5f3e8c4efe7a1a0d4e8e5a0e6ece1e7a0e9f3baa0e8eafae3f9e4eafae2eae4e3eaebfaebe3f5e7e9f3e4e3e8eaf9eaf3e2e4e6f2" flag="" for i in range (0,len(string),2): s = "0x" + string[i] + string[i+1] flag += chr(int(s,16) -128) print(flag)
9.如來十三掌
a.看字符直接與佛論禪
b.得到這一串
MzkuM3gvMUAwnzuvn3cgozMlMTuvqzAenJchMUAeqzWenzEmLJW9
c.由如來十三掌想到rot13,然后進行rot13解碼,最后base64解碼得到flag
10.base64stego
這個題目說簡單也不簡單,說難也不難,我對這個題目的理解還沒有到達分享的地步,在這里分享一個師傅的博客。
在這里只把python的腳本貼出來做一個保存。
import base64 b64chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/' with open('F:\\ctf文件\\rebuilt.787798f51ce441dd9961405c1aff8893\\stego.txt', 'rb') as f: flag = '' bin_str = '' for line in f.readlines(): stegb64 = str(line, "utf-8").strip("\n") rowb64 = str(base64.b64encode(base64.b64decode(stegb64)), "utf-8").strip("\n") offset = abs(b64chars.index(stegb64.replace('=', '')[-1]) - b64chars.index(rowb64.replace('=', '')[-1])) equalnum = stegb64.count('=') # no equalnum no offset if equalnum: bin_str += bin(offset)[2:].zfill(equalnum * 2) # flag += chr(int(bin(offset)[2:].zfill(equalnum * 2), 2)) # print(flag) 這樣寫得不出正確結果 print([chr(int(bin_str[i:i + 8], 2)) for i in range(0, len(bin_str), 8)])
11.功夫再高也怕菜刀
a.在流量包中搜索flag
b.追蹤幾個tcp數據流后發現存在FFD8/FFD9,這是png圖片文件的開頭和結尾
c.把FFD8和FFD9之間的數據復制寫到winhex中,注意以十六進制數據寫入,然后改為png打開
12.stego
a.在google上安裝插件PDF Viewer
b.控制台輸入document.documentElement.textContent,得到一串AB編碼而成的字符串,將A變為 . ,B變為 - ,摩斯解密為CONGRATULATIONSnullFLAGnull1NV151BL3M3554G3
c.即flag為1NV151BL3M3554G3
