iT邦幫忙

第 11 屆 iT 邦幫忙鐵人賽

DAY 21
0
Security

CTF 的三十道陰影系列 第 21

Day21: [Pwn] blue-lotus & BCTF

前言

這兩天看了一下 Balsn CTF,題目難度果然很高,而且解起來也頗複雜 QQ 因為還得準備下星期的 HITCON CTF,看了幾題覺得會做就精神勝利了 XDD 目前應該剩下 PlainNote 還沒想到做法......null byte 造成的 shrink the chunk 在 glibc 2.29 被修正掉了 T__T 原本以為繞過 tcache 就行了,晚點再回去改一下前幾天的文章 QQ

blue-lotus

隨著中國對資安人才的培育,現在中國的強隊真的不少 (A*0*E, r3kapig, Nu1L, Tea Deliverers, ROIS 等等),而且很多人整理和貢獻 CTF 教材,這幾天在復健 (?) 時從 ctf-wiki 和不知道是哪些隊伍的 blog 惡補這陣子脫節的技術,從中受益良多 XD 但還是得提一下中國最早發跡的 CTF 隊伍 -blus-lotus

blue-lotus 最早是由北京清華大學的學生組成,由段海新教授和博士生諸葛建偉共同創辦,隊長由楊坤擔任,後來陸續吸收當時全中國最優秀的 CTF 人才壯大隊伍,並開始向最高殿堂 DEF CON CTF 衝擊,2013 年與其他幾個戰隊聯合成功闖進 DEF CON 21 CTF 決賽,最後獲得第 11 名的成績

  • 華人世界首次有隊伍入圍 DEF CON CTF 決賽
  • 雖然不算是太前面的名次,但值得嘉許的是還保存了 441 分,沒有被打到 0 分 ... XD
  • 當年是 LegitBS 第一次設計攻防賽制,場面十分血腥,20 隊裡面有 8 隊被打到 0 分,PPP 共獲得 15002 分

2014 和 2015 年也成功進入 DEF CON CTF 決賽,兩年都獲得第五名佳績,2016 年與新生代強隊 0ops 合體組成 b1o0p,在 CGC 規則之下獲得第二名的成績,之後就比較淡出 CTF 圈,但部分成員還是有組 Tea Deliverers 繼續征戰 DEF CON CTF

  • 2015 年在 ctftime 上獲得總成績第八的成績,但同年 0ops 在 Keen Lab 的培育之下火速發展,不但自行舉辦 0ctf 還在 ctftime 上獲得第三個成績,讓 blue-lotus 有點相形失色 QQ
  • 淡出 CTF 跟大部分隊伍的原因相同,大家成功畢業啦~ XD 除了畢業以外,blue-lotus 的隊長楊坤與部分成員成立了資訊安全公司長亭科技,作為新創公司就很難在分出精力在 CTF 上了......

BCTF

blue-lotus 打進 DEF CON CTF 之後,隔年吸收參加 DEF CON CTF 的經驗,自己舉辦 BCTF 百度盃全國網絡安全技術對抗賽,希望能帶起全中國的 CTF 的 CTF 風氣,但當年冠軍是由台灣的 HITCON 217 戰隊拿到,以極大比分的差距獲得勝利 XD

  • 下圖為分數走勢圖,黑色是 HITCON 當時的分數,其他六隊的分數加總還比不過 HITCON 217 的分數,被網友戲稱秦掃六國)

  • 2014 年的百度盃,受眾是中國國內的新生隊伍,志在培養 CTF 的新血,題目從簡單到困難都有,既不會嚇跑剛接觸的群眾,也可以鑑別出強隊的實力,是一場很成功的 CTF

  • 當時 BCTF 除了 CTF 競賽以外,還同時舉辦了百度盃大賽寶貝,CTF 比賽只能說是樸實無華且枯燥,結合選美比賽可以吸引大眾目光,創造話題和商業價值

BCTF 不僅成功帶動了中國 CTF 風氣,也讓 HITCON 戰隊率先體會到 Attack & Defense 規則的下的經驗和訣竅,HITCON 能一舉在 DEF CON 22 CTF 以首次參加就獲得亞軍,參加 BCTF Final 的經驗功不可沒

隔年 BCTF 2015 正式拋開百度盃,正名為 BCTF,向全世界開放註冊,首次證明中國開始有辦世界級 CTF 的能力,最後冠軍由 217 拿下,亞軍為 PPP 和 tomcr00se (geohot),同年 blue-lotus 開始推動 XCTF 聯賽,鼓勵各地的 CTF 隊伍自行舉辦 CTF 比賽並設計聯賽積分的制度,年底選出積分排名前 n 隊的隊伍參加 XCTF 決賽,雖然各大專院校舉辦的 CTF 有些良莠不齊,但整體上來看成功培育出了一批又一批的新興資安人才,此制度在 blue-lotus 和 0ops 的成員都已經陸續畢業投入職場後,還是培育出來 r3kapig, ****** 等強隊支撐中國 CTF 圈

老兵不死,只是凋零....才怪,blue-lotus 雖然逐漸因為工作相對淡出 CTF 圈,但不代表著他們就離開這個圈子,2018 年長亭科技吸收了這幾年工作的經驗,舉辦了第一屆 Real World CTF,號稱所有題目都是由真實世界的漏洞所設計,高額的獎金和宣傳吸引了眾多隊伍來挑戰,至今已經舉辦了兩屆,題目品質也是有目共睹,有空再來介紹 Real World CTF 的經典題目 XD

0x:14: BCTF 2014 PWN 100 後門程序

BCTF 當時全部題目設計背後都有背景故事,以傳奇駭客凱文米特尼克作為故事主軸,搭配自己發想的一些故事情節,真的是別出心裁

當年剛開始接觸 CTF,BCTF 應該是我參加的第二場還第三場賽事,題目由簡單的 100 分到困難的 500 分都有,我好像只解了兩道 100 分的題和一道 200 分的 PPC 題,但對於我來說算是得到了不少信心,當時很多場 CTF 都是一題都解不出來.....ORZ 今天介紹的這題應該是我第一次在正式比賽出解出的 pwn 題,特次紀念 XD


程式是 32 bit 的 x86 程式,沒有 NX 和 stack canary 的保護 (真是美好的年代......),執行起來會印出一段歌詞最後詢問要不要 replay,讓使用者輸入 yn,在讀取 input 時,因為是透過 scanf("%s", buf) 讀取 input,存在 stack overflow 的問題,執行起來大約長這樣:

(lyrics ...)
Drink all the booze
Hack all the things
Replay?(y/n)

這題程式有故意留後門,讀取完 input 之後,會把 input 逐 byte 和 <baidu-rocks,froM-china-with-love> 這個字串做 xor 運算,然後檢查前 10 byte 是不是等於 n0b4CKd00r,如果相同就會跳 buf+10 的位置執行,因此我當時的做法是:

  1. payload = xor("n0b4CKd00r" + shellcode, "<baidu-rocks,froM-china-with-love>")
  2. 檢查 payload xor 之後 是不是包含 \x00, \x0a, \x20 之類的會讓 scanf 終止的字串,如果有出現非法字元,用 \x90 nop 調整 shellcode 的順序
  3. 開心拿 shell

後來比賽結束,我看 217 分享的 write up,才知道這題完全不需要這個後門程序 = = 利用簡單的 ROP 就可以秒殺這題,誰還跟你算 xor 調 offset ...... XD 這題也是我第一次見識到 unintented solution 的威能,感恩 217,讚嘆 217 (?)


上一篇
Day20: [Pwn] lokihardt & Pwn2Own
下一篇
Day22: [Web] TokyoWesterns & TokyoWesterns CTF
系列文
CTF 的三十道陰影31

尚未有邦友留言

立即登入留言