close

上次發文章好像是 10 個月前的事了

那就在一年一度的跨年夜來發點廢文吧 XD

(其實是 CTF 心得文)

===================================

來到交大讀碩士也有一年餘

轉眼之間也只剩半個學期了

歲月真的是不饒人啊(嘆)

回顧這一年

光是 CTF 就可以發個好幾篇心得文 XD

 一年下來打過的比賽

應該比我在大學四年參加過的比賽還要多吧

從年初的 CTCTF, Codegate, BCTF & 0CTF

到年中 Plaid, Volga, ASIS Qual , XCTF 和 DEFCON Qual

再到年尾的 Hack.lu, 9447 和 HITCON

說穿了就是個 CTF 年 XD

也因此讓我在今年體會到了許多跟以往不一樣的體驗

=========================================

其實年初修完程安,打完 CTCTF 之後

還是並沒有感覺到自己的實力有任何顯著的成長

很多知識都只有學到皮毛

真正上場比賽時就會發現很多東西其實自己根本沒有搞懂過

也因此年初的幾場 CTF 基本上都是在打醬油

僅偶爾貢獻幾題 PPC 的題目這樣

 

Boston Key Party

這場是跟 HITCON 一起打的

雖然最後拿下第二名,HITCON 也因此遞補進了 DEFCON 決賽

不過說穿了整場就是在打醬油,看 217 的幾位大大在那邊表演

這場也讓我感受到 64 bit ELF 的題目是之後的趨勢,勢必得開始學習 x64 binary 的 exploit 技巧了  

 

Codegate

這場依舊是以耍廢為主

韓國不愧是資安大國,傾全國之力栽培新星

出題的猥瑣度完全是不同的等級

印象最深刻的一題就是可以把記憶體當作倉庫番推 XD

真的很佩服他們可以玩 binary 玩成這樣

 

PlaidCTF

神之隊伍 PPP 辦的 CTF

這場依然打醬油,看了幾題 pwn 和 reverse 卻依然毫無貢獻

只和宗育解了幾題 crypto

 

BCTF & 0CTF

兩個中國較為著名的 CTF

BCTF 是北京清華 blue-lotus 所舉辦,0CTF 則是上海交大 0ops 所舉辦

BCTF 印象較為深刻的就是和大家一起合力解了一題跟數列有關的 PPC

0CTF 則是較有貢獻的一次

解了 3 題 PPC 的題目之外,也差一點點解掉一題 crypto

不過讓我印象最深刻的還是 freenote,一題 400 分的 pwn,double free 的漏洞利用

這題讓我深刻的了解到即使我在程安學到了 heap exploit 的技巧

卻依然還是對真正的 heap exploit 一無所知

 

0CTF 決賽

算是這輩子第一次出國比賽 XD

和實驗室學長寬寬,同學宗育和 HITCON 大大達達

一起到了上海交大跟其他中國隊伍 ( 還有 217 ) 打了一場 attack & defense 的 CTF

除了開開眼界之外,也見識到了自己 ( 甚至是整個 BambooFox ) 在攻防型的 CTF 上還有許多進步的空間

整場幾乎就是被 217 打趴 XD

唯一的貢獻就是在第一天清晨把簡單的洞的 exploit 做出來

然後在第二天打了幾隊,玩了下後門 XD

尤其看到 dcua ( 烏克蘭強隊,CTFtime 上面 2015 年度總排名第六 ) shell 被我們拿假的就感到莫名的爽 XD

雖然最後名次不如意,卻也是個經驗


 

可以看到其實在一個缺少有系統教學的環境裡

要學習 CTF 是多難的一件事

就我而言,年初的 CTF 除了可以貢獻幾題 PPC ,練練 scripting 能力之外

binary pwning 基本上是從頭學起

從 reverse 一支 binary,挖洞,找洞到寫 exploit

要在沒有人帶的情況下練好這些技能真的是頗困難

也因此這段期間我 binary pwning 的技巧進步得相當緩慢

現在看來多少覺得有點可惜

==========================================================

到了年中基本上主角就是 DEFCON Qual

另外也全力爭取中國 XCTF 總決賽的參賽資格

 

VolgaCTF 

這場其實是在打中國 ACTF 時,覺得題目太雷才來打的 XD

依然貢獻了題 PPC,不過印象較深刻的還是 my little pwnie 這題

BOF + format string 漏洞的結合,加上 dup2+execve shellcode 

因為 HITCON 的 Lays 大大在 trello po 了 writeup 的關係

讓我將這題從頭到尾徹底得學了一遍,也讓我徹底搞熟了 format string 與 shellcode

自己還特地寫了篇 writeup,記錄一下讓自己經驗值大長的一題

 

ASIS CTF Qual

依舊是貢獻一題 PPC XD 

此外再度因為 sawthis 這題讓自己重新學習了 x64 binary pwning 與 ROP 的一些技巧

 

Volga 和 ASIS 這兩場 CTF 對我來說真的很重要

因為這兩次的 CTF 都有題目讓我練到 binary pwning 的一些很基礎,但是很重要的技巧

也因此才有之後在 DEFCON Qual 的表現

 

DEFCON CTF Qual

年度駭客競賽的盛會

在 BambooFox 一些比較強的主力被拉去 HITCON 支援的情況下

只剩下一些我們這種實力不足的弱炮自求多福 XD

不過也因此讓我們有機會解到一些比較難的題目

這次總分 18 分之中貢獻了 4 分

一題 PPC 兩題 pwn, 在當時算是成績最好的一次

尤其是 2分 pwn 題 wwtw

集結眾人之力

programming  reverse  pwn  火力全開

最後靠著在 0CTF 決賽和 VolgaCTF 那次學到的 format string 技巧,解掉這題

感覺真的很棒  ( 很喜歡這種大家集思廣益,分工合作,最後將題目解掉的感覺 )

雖然最後理所當然得無法擠進決賽,卻也打得十分過癮 

 

 

 

 

XCTF 決賽

第二次出國打 attack & defense 形式的決賽 XD

而且地點又是中國...

這次來到了南京,主辦方換成了 blue-lotus

隊友有學長寬寬,學弟 mango 和 大神安傑 ( angelboy )

對手則是有 0ops 等中國隊伍 ( 當然還有 217 )

結果這次依舊比得悽慘

service 一直被種後門導致 DoS 攻擊

主辦方也沒有禁止這種行為,導致最後我們雖然 exploit 有出來但是都打不到幾隊

加上比賽環境又很雷,因此爆得很慘 XD

不過還是增長了許多經驗,這次因為又是擔任 SA 的關係

也因此又學到了許多東西,包括 replay attack 的技巧,如何處理後門...等

賽後也跟 217 和 0ops 交流了一下,學了許多東西

還有就是見識到安傑的強大 XD

他找洞跟漏洞利用的能力真的很可怕,debugger 用的也不是普通的熟

比賽當下也跟他學了許多的技巧,希望有一天能夠像他一樣強(雖然覺得不太可能XD)

新聞連結: link

============================================================

在這之後進入了暑假

學弟妹也進來了實驗室

在有許多新生的情況下,BambooFox 決定開班授課

大家參與的情況也相當踴躍

而我也貢獻了一堂課

主要是教大家怎麼寫 shellcode ( 投影片: link ,錄影: link )

 

看到新生們很努力的學習

再想到當初自己一路披荊斬棘的這樣學過來

不免感到一陣感慨

也希望之後的學弟妹們能夠維持住這樣一個如此美好的學習環境

 

這段期間自己也持續在努力精進自己

我還發現能夠有效率的使用自己的工具其實是相當重要的

因此也開始在 github 上面開發, 改進了許多自己的 tool

像是 debugger ( peda & pwndbg ), roputils, 還有一些自己打 pwn 時常用的 script 等等

都讓我之後在打 pwn 的時候更有效率

 

此外也在因緣際會之下,參與了暑期資安課程 AIS3

初賽時拿下了第11名,幸運擠進了正選的修課名單

其實本來也只是單純的想去聽一下 sean 大大的 pwn,還有見識一下 PPP 的大神們

沒想到課程意外得蠻充實的,學到的東西比我預期的多

所獲得的回饋更是出乎我意料之外

不但最後用這門課抵掉了研究所的課程,減輕了二上的學分壓力

更因為在 AIS3 Final CTF 表現突出的關係,讓我意外的獲得了之後 HITCON 決賽的門票

=============================================================

之後進入了碩二上

除了要顧修課之外,碩士論文的壓力也接踵而來

還好之後總算有找到自己的題目

希望之後能夠一切順利

 

不過也因為這樣的關係,打 CTF 的時間相對就減少了許多

除了幾場重要的有稍微參與之外,其他基本上就把機會留給 BambooFox 的新人了

 

CampCTF

特別提這場是因為這是我跟宗育目前唯二用 captaindildo 的隊名去打的 CTF XDD (另外一場是 backdoor CTF )

binary pwn 的部份基本上全解,還跟宗育一起解了一題 reverse + crypto

貢獻了1000多分,名次還有 23 名 XD 不錯不錯

 

CSAW CTF

有史以來打過最爽的一次 CTF !

跟實驗室的同學們組成了 BambooFox_DSNS 參賽

pwn 解了 2 題之外還 AK 了 reverse ( 3題 ),貢獻 1500 多分

其中一題還是要 reverse NES 的 binary,生平第一次解掉初次看到的 arch XD

 

Hack.lu

算是從這場開始就漸漸得不怎麼全程參與了

草草看了幾題,貢獻了一題 200 分的 reverse 

其實 Hack.lu 的題目一直都很不錯的,夠創新也夠有趣

因此也覺得蠻可惜的

 

HITCON CTF Qual

目前為止 BambooFox 會傾全員之力力拼的 CTF 只有 2 場

一場是 DEFCON, 另外一場就是 HITCON 了

這次因為是 2016 DEFCON Final 種子賽的關係

幾乎全球最強的隊伍都來了

也因此幾乎是全員到齊,目標力拼前十進 HITCON 決賽

只是個人覺得這次題目難度的拿捏似乎不怎麼好

難的題目真的太多了,導致第二天基本上就只有我們實驗室在解

其他人幾乎都放棄了

我也只貢獻了一題 pwn

最後當然也是沒進前十名,畢竟跟全球頂尖實力的隊伍還是有段差距

遺憾得結束了今年的 HITCON CTF.... Or is it ?

=======================================================

 

HITCON Final CTF

website: link

 

結果在 HITCON Final CTF 比賽的前兩個禮拜

主辦單位寄了封 E-mail, 問我們有沒有意願打 HITCON 決賽 !!

原來我跟宗育當初用 bamboofox_captaindildo 在 AIS3 Final CTF 拿下了學界第二名

而原本的第一名因為一直沒有回覆參賽意願,所以我們就這樣遞補進了決賽 !

一切真的是來得又快又神奇

HITCON 決賽能跟 PPP, Dragon Sector , 韓國 Lokihardt 等高手同台競技,我們當然不可能放過這次的機會

於是馬上找了實驗室的健賀還有學妹 bubble 一起組成了 BambooFox-DSNS 參加

就當作是學生(也是 captaindildo ) CTF 生涯的畢業作 XD

也因此不管是賽前準備還是比賽當下都非常歡樂

因為這次的隊伍都是 DEFCON 等級,被電是完全正常的 XD

值得一提的是因為我跟宗育有過黑歷史 ( 詳見 CTCTF心得 XD )

jeffxx 特別設立了 "DSNS 條款": 禁止散布猥褻文字或圖片

我們因此心情低落了一陣子(什麼鬼)

比賽一開始就看到 binary 是 RISCV 架構,我跟健賀立馬崩潰 ( 應該說瘋掉 XD )

兩個人就一直傻笑 + 發呆,直到韓國隊伍打出 firstblood 後才開始振作起來分析 pcap

一開始還以為很難 replay attack , 結果我發現其實整包照送一次就可以打到別隊了...

於是我們終於有了exploit,之後健賀在同一題又發現了另一個可疑的 payload

跟我討論之後,我根據之前用 objdump 的分析結果跟以前的解題經驗

猜測 payload 是 leak 出 加密的 flag 後再做一些 xor 運算把 flag 反解回來

於是就開始嘗試反解,結果沒想到就這樣被我給解了回來,replay 成功 XD

當時這個 exploit 最多還可以打到 8 隊,對於當時落後許多隊的我們相當補啊 !

之後第一天晚上我們也懶得分析 binary 了,早早就寢

反正策略還是一樣: 打 replay, defense 部份隨便 XD

第二天的話一開始較為平靜,加上又有新題目放出來

於是我開始分析新題目,結果試到可以 leak libc base 時 PPP 打出了 first blood

轉為分析 pcap 後,猜測應該是 use after free 後跳 shellcode

結果重送時發現 PPP 的 payload 不會 work

最後當機立斷直接重新計算 offset + 重寫 shellcode 才 replay 成功

此時我的任務到這邊差不多就結束了

 

比賽最後 2 小時會進入 Turbo mode, 也就是 5 分鐘一輪改成 2 分鐘一輪

結果進入 Turbo mode 後,俄羅斯隊伍 LC↯BC 開始利用 Orange 刻意留的洞

針對全場的 web 發佈大規模的 DDoS 攻擊

幾乎全場的 web 都陷入 service down 的狀態, LC↯BC 因此獲得了相當多的 service check 分數

結果跟 bubble 一起看 web 的宗育決定啟動人工防禦機制

一看到可疑的東西就立馬把它 ctrl-c 掉

結果效果竟然意外的顯著

我們因此好幾輪都呈現 service up 的狀態,分到了不少分數

也因此我們直到最後得以連續超越日本 Tokyo Western 和 美國 Samurai

逆轉獲得了第十名的成績,更因此獲得了 HITCON TAIWAN STAR AWARD + 1000 美金

其他八卦:

* 光劍的燈在閃時沒有我想像中的刺眼,但是聲音依然很擾人,每發一次就覺得自己被捅 XD

* 比賽快結束時 atdog 和 sean 跑過來問我們 RISCV 那題的 payload 在做啥, 一問之下才知道原來那個 payload 竟然會 DDoS service @@ 到現在還是不知道為什麼 XD

* atdog & sean: 算了啦繼續打吧,反正都快結束了 ( XD

* 韓國隊雖然說他們只用 IDA Pro, 但是根據工作人員的觀察, 他們其實很少開 IDA, 幾乎都在用一種類似 qira 的工具 ( 韓國人果然很心機 XD )

* Dragon Sector 最後發威,不小心把自己的 web 搞壞之後乾脆打進所有隊伍的 web 把全場的 web 都搞壞,所以最後有幾 round 大家的 web 都是壞的 XD (這才是 hacker 啊 !! )

* Dragon Sector 打我們的 web 時種了一個 reverse shell 進去,有明顯的 IP 和 Port,本來最後想送 dildo 過去但是被主辦單位阻止 XD

* 結果之後跟 Dragon Sector 閒聊,他們說其實 LC↯BC 也有送 8====D 給他們 XD 還說 " That's the spirit ! ",認為我們沒送 dildo 給他們相當可惜 XDDD

總之這場打得真的是相當開心,能夠當作 captaindildo 的畢業旅行算是相當值得了 XD

==================================================================================

其實我一直覺得 CTF 是個相當值得推廣的活動

利用遊戲的方式來讓人學習資安,享受攻防的樂趣

對於想要體驗當駭客的感覺的人來說再適合不過了

雖然入門門檻較高,不過我覺得只要有心想學一定都學得起來

重點是願不願意花時間在上面

自己打了一年,覺得除了練到程式能力之外

還練到了像是 binary 分析,debug(除錯),reverse(逆向),還有許多 OS 和系統的相關知識

實在是受益良多

=========================================================================

一年又過去了

在這一年能夠盡情做自己喜歡的事的我,真的很幸運

然而這樣的日子也所剩無幾了

接下來除了要忙碩論和畢業的事之外

也該開始思考自己人生的下一步該往哪個方向前進了

希望之後能在新的一年裡

除了能夠把該做的事情做完之外

也希望能夠找到新的方向,繼續向前邁進

CTF 也好,碩論也好,之後的任何事情也好

希望一切都能夠順順利利,平安得過完

加油吧 :)

( 哪來的台客 )

 

arrow
arrow

    Tube 發表在 痞客邦 留言(0) 人氣()