2011 台灣駭客年會 (HIT2011) 心得及 Wargame 解題思路
前兩天前往中研院參加「台灣駭客年會」(HIT2011),一早報到時就能看出今年的聲勢浩大,據說有七百多人報名,也要感謝為數不少的黑衣工作人員們 <( _ _ )>。
今年打定要來賺回報名費,所以從一開始就跑去第二會議廳開戰,幸好今年第一、二會議廳的同步投影品質很不錯,一邊廝殺的過程還可以順便聽聽台上的大牛們演講。
Wargame 第一天的狀況看來是很多高手都尚未露面,所以解了一些簡單的題目之後運氣很好地溜進前三名,當天晚上受邀和主辦單位、講師、貴賓們一起參加遊艇趴。雖然在淡水河上漂流三個多小時還滿累人的,不過整個氣氛就是很高級,而且跟這麼多高人聚在同一條船上的經驗也是非常特別。下場就是結束馬上從北車搭小黃回家,完全沒力氣再碰 Wargame,洗完澡倒頭就睡了 XDD
第二天一早到會場後不久 wargame server 就上線了,連上 score board 一看,果然馬上就被強者們電翻,名次瞬間往下掉掉掉,僅管沒什麼戰鬥力了,還是要開戰拼一下。
下面是今年 wargame 的最後排行:(點開看大圖)
Wargame 題目在噗浪上看到有人 (@rsghost) 備份: http://rsghost.web.fc2.com/HIT201_wargame/10.0.15.1/ 不知道會存活多久,要備份要快XD
今年的 Wargame 品質真的很高,不論是整個系統或是題目都很棒,尤其好幾題都出得非常有創意,解題之餘實在是令人佩服出題者的高深莫測!今年運氣還算不錯,解了七題,下面就列一下有解出來的題目的思路:
Web 1
標準的 CAPTCHA 破解題。一開始看到雜亂的背景,直覺認為單純 OCR 應該不夠,所以去找了幾年前發佈的專案 PWNtcha 來處理,沒想到出來的結果都包了一堆問號… 後來本來想用 Python + PIL 自己硬幹辨識,不過懸崖勒馬想說用 gocr 試試看好了,結果一試就出來!囧>
既然處理好辨識的部分,剩下的用 curl 就可以解決了。
Web 2
這題也是瞎矇中的 XD 第一天午餐的時候無聊打開 wargame site 想說能不能有靈感,結果看到這題新出現,隨手點進去決定先看看、吃飽飯再解,結果亂玩亂玩就玩出 key 來了!這題感覺是要寫一支猜數字的 client,原題應該也是不難啦。
Misc 1
就… 標準的 wargame 送分題,注意一下要全部大寫,句末還有一個驚嘆號就好了。
Misc 2
時事題!!給了一堆地震資料的 KMZ 檔,解開 zip 後是 Google Earth 用的 KML 格式,有超級多點的。一開始想說既然是預言,就該從日期下手,果不其然找出三處地震的發生時間是在未來,但不知道 key 的格式,用震央地名送了幾次都失敗。後來看地名好像事有蹊蹺,直覺認為應該是要在 Google Earth 上找大頭針拼出來的文字圖樣吧,找了很久之後放棄Orz 結果第二天才公布 key 的格式是一串 md5 hash,這根本猜不到啊 XDD 照要求送 key 就過了。
Misc 6
Flash 送分題。打開後按下按鈕就會在左上角出現一個很小的 text box,放大整個 flash 影片之後 focus 到 text box 裡按全選、複製就可以得到 key 了。
Misc 7
也是時事題!nc 連上去之後發現是前幾天被爆料有後門的 vsftpd 2.3.4,一開始手動送 username「:)」沒有過,想說會不會是主機 firewall 沒設好,後來打開 metasploit 用工具打一下也是沒收穫。結果仔細一看才發現,username 的第一個字元必須要是 valid character,重送一次「USER X:)」然後再 nc 上 tcp/6200 就會噴出 key 了。
Forensics 2
也是很潮的時事題!題目是一個 1 x 203401 pixels 的 PNG 圖片,剛好前陣子不小心看到 Defcon 19 CTF Quals 有類似的題目,把 203401 拿去質因數分解得到 (11^2) x (41^2),直覺認為 11 x 41 = 451 大概是重組後的長寬大小,寫了一支 py script 把圖片切一切重組一下,得到一個 QR code,解碼後就是 key 了。
其它還有一些耳聞解法或是關主有出來面對公布思路的也列一下:
Web 3
題目有給定的路徑是「/GetEvent.asp?s=b.__name」,看不出所以然來,隨便試了幾個 s 的值之後得到 500,沒有頭緒所以一下子就放棄了。後來在 IRC 上看到,其實該頁面存在 SQL injection flaw,用的 SQL 式是 sql = “Select a.__id, ” + s + “, c.__user, d.__pwd, e.__mail from _id as a, _name as b, _user as c, _pwd as d, _mail as e”,也就是 s 可以插的意思… Orz
(20110725 updated) 這題後來關主 Orange 也有釋出解題思路,請看: http://orange-tw.blogspot.com/2011/07/hitcon2011wargame-web-3.html
Web 4
據關主表示是很有創意的技術 && real site 常用到的。一開始看到 WP login form 之後找了一下幾個 WP 弱點,雖然直覺想說不太可能還是試了一下,果真不行。後來發現註冊頁面檢查使用者帳號是否重覆的地方存在 SQL injection 漏洞,但我實在對 SQL inj 沒輒,試了一兩個自動工具也插不出來,也是立刻放棄 XD
後來關主 Orange 有在他的 blog 上釋出解題思路,就直接看吧: http://orange-tw.blogspot.com/2011/07/hitcon2011wargame-web-4.html
Misc 3
壞掉以及被填上顏色的 QR code,去找 spec 修正一下定位點跟 information block 之後解碼就可以得到 key。這題我做的時候一直修錯 info block,導致一直掃不出來,也是殘念啊…
Misc 4
只有 10 分的 flash 題,下意識就拿出拆 swf 的工具把它拆個精光,看一下 resources 沒有發現,後來把 action scripts 都大略看了一下,也是沒甚麼收穫,想說 10 分而已怎麼這麼複雜 XD 沒想到其實我就有看到 key 了… 囧!!
而且這題竟然在 YouTube 上就可以找到 key 了啊啊啊啊啊!# http://www.youtube.com/watch?v=tNCCDRiwj8U
本來想說提示裡的 hidden level 是關主另外加的 Orz
Misc 5
(20110726 updated) 給一個壞掉的 RAR,後來提示說經由 FTP 傳輸,所以下意識想到要把 0a 改成 0d0a,但是全部有 100 多個 0a 啊囧… 列舉全部的話太多了不可能暴力破,所以放棄= =a
後來關主 Outian 有釋出解題用的程式 (in perl): http://outian.net/temp/hit2011_misc5.txt 看來就是要把其中一個 0a 改成 0d0a 即可 Orzzzzz
Forensics 1
生活題,關主事先在 komica 上張貼 HIT2011 的相關文章,要從討論區裡顯示的 ID 去推出發文者的 IP 來,後來 google 到這些 ID 的生成方法,照著寫 scripts 去暴力猜,看提示說 IP 是某大 ISP 發的,直覺猜是 Hinet,所以上 TWNIC 找一下 Hinet 的 IP ranges 之後就開始暴力破。還一度跑掛我的機器… 打電話回去請人重開。
這題最失敗的就是,我的 salt 是直接用那篇文裡面的… Orz 後來才發現 komica 上每個板都有不同的 salt,難怪跑不出來。看來要先去 komica 上 po 一篇文,用自己的 IP 算出該板 salt 之後,再用這個 salt 去破題目給的 ID。
Forensics 3
(20110726 updated) 這題還是不知道怎麼解,不過後來在噗浪上看到 medicalwei 釋出的 gist: https://gist.github.com/1102434。我本來也要這樣幹的,可是想說應該不是這樣解… Orz
Forensics 4
(20110726 updated) 沒解出來,後來看到今年第三名強者 Jeffxx 團隊釋出的文件: http://wargame.cs.nctu.edu.tw/file/hit2011.txt 直接看吧。
Crypto 2
(20110726 updated) 在 IRC 上看到關主 Aphyr 釋出的超詳解: https://plus.google.com/118167027367905384991/posts/ToLQkMRXtiY
Binary 1
題目給的 SlotMachine.exe 執行後會 drop 一個檔案:SlotMachineDrop.exe 而且執行它,會根據亂數彈出 fake key。根據後來的提示,應該是要把某個變數的值改成 7(程式裡是 mod 6),就會執行一段本來跑不到的程式進而噴出 key 來。結果我一直對 SlotMachine.exe 下手… 之後才聽說是要改另外那個 SlotMachineDrop.exe,一樣也是很失敗。
(20110725 updated) 不對… 改 SlotMachine.exe 是對的,我當時找到的點也是對的,只是要改成「6」,不是改成「7」啊!!!!! 因為原本是 mod 6,所以改成 6 才是原本不會出現的第七個數字 Orz 這樣顯得我更笨了
Binary 3
題目是用很經典的「特訓 99」遊戲去改的,我的逆向工程並不強,所以一開始扔進 OD 發現有加殼,用 PEid 掃一下沒結果,認為是奇怪的殼,而我對脫殼沒甚麼研究,所以大概就放棄了。
關主 Orange 一樣有在 blog 釋出解題思路: http://orange-tw.blogspot.com/2011/07/hitcon2011wargame-binary-3.html
這次都沒有解出任何 Crypto 與 Binary 的題目,實在是大失敗啊… :(



