2018 金盾初賽術科紀錄

先貼個 去年的心得

這邊就不再贅述那個猜猜樂的學科了,直接進入術科部分。


這次終於採用像樣一點的 CTF 平台了(CTFd),一直以來主辦方很愛自幹奇怪的平台,然後又自幹得很爛。以去年初賽來說,他的 Flag 提交系統他媽根本連你有沒有答對、解過什麼題目都不告訴你,完全不知道在衝三小 = = 。

初賽環境並沒有提供對外網路,只能使用主辦方提供給你的工具,但主辦方一如既往地做了莫名其妙的事,至於是什麼事等等再說吧(?)

以下是主辦方提供的工具:

題目們

Mobile

他給你了一個 Apk 檔,叫你找出 Flag。

主辦方雖然給了 apktool ,但其實你不 decompile 也沒差。apk 本質上其實就是一個壓縮檔,將它解壓縮後,就能看到一些 *.xml ,在某個 strings.xml 裡,就能找到 Flag 了。

Forensic

題目給了一個 pcap 叫你去找 flag。

總之一如往常的封包分析題,先把他丟進 wireshark 再說。這題只要簡單的 follow TCP stream 一個一個看就能找到了。

Misc

一個 zip 檔,但不能 unzip。

首先丟進 Win Hex,發現他的 file signature 錯了,正常的 ZIP 應該是 PK (50 4B) 開頭,但他給的則是 QZ 開頭,於是把它改過來,就能解壓縮了。

接著,他跑出了一個檔案(忘記是啥檔案了),於是丟給 binwalk 分析,發現裡面還有藏一張圖,分離之後上面寫了凱薩加密過的 Flag,位移一下答案就出來了

Crypto(?)

通靈題。 他給了一串 32 bytes 的 Hex string,然後提示說「寫程式的第一步」。

首先,身為一個優良的通靈題,我們直覺的 hex to string 當然是行不通。那 32 bit ,你們會想到什麼呢?是的,md5。

但他媽的我們沒有外網RRR,要怎麼解 md5 啊,這時候回頭看看題目說明「寫程式的第一步」,該不會是「Hello world」之類的東西吧?於是開始猜各種大小寫標點符號組合,最後終於猜到那是md5(CTF{hello world})

低能題目= =

Reverse

這邊就要來談談主辦方給的莫名其妙的工具了 XDDD

題目是給 64 bit 的 binary,主辦方給的 OllyDbg 卻是用來動態分析 32 bit 的,恩… What the (ry 我們是現場沒解出來啦,想說用記事本翻會不會翻到 Flag

出賽場之後,聽到有人用 Dev C++ 內建的 MinGW 的 gdb 來 trace … 酷,原來 Dev C++ 是要這時候用的,我都不知道原來 Dev C++ 裡面有這種東西啊 XDDD

至於解法,這題就只是簡單的 xor 題而已。

之後呢

\進決賽了,一樣是用超潮的「所有參賽隊伍」/

Discussion and feedback