去年決賽只有一題 Attack and Defense

今年改成全 Attack and Defense 跟 King of Hill 的賽制

隊伍是 Starburst Kiwawa
這次最後拿到 11 名
第一天明明還有前三的嗚嗚

ranking

正文

在比賽前本來想說要架個 ELK 來玩
結果賽中完全沒用到
不知道前幾天花整個晚上架是要幹嘛
或許之後出個教學文之類的ㄅ

賽制

每回合有五分鐘
以每題的百分比積分去排名
比如說第一題最高分 180 分
然後我拿 90 分
這樣子我拿到的百分比積分就是 5000 這樣子

A&D

拿到別人的 FLAG 有分數
被拿到 FLAG 會沒防禦分
service check 沒過會沒檢查分
上 patch 那一回合視同 service check 沒過

KoH

每回合每隊根據題目規則的排名拿到分數
排名越高拿到的分數越多

第一天

比賽總共有四題
比賽一開始只釋出兩題 A&D
分別是 NAS 跟 PyJail
binary 我不太行,所以 NAS 那題就交給隊友,不過好像下午隊友才看出來他在幹嘛
而我就負責 PyJail 的部分
題目很簡單,攻擊方就是寫 python 去撈 flag.txt
防守就是 def 一個 jail 函數去過濾或著是擋攻擊方的 code

本來是想說我負責攻擊然後隊友負責寫 WAF
攻擊腳本是寫的蠻順利的,只是寫得有點慢
一開始被別隊搶佔了先機
腳本的思路大概就是多寫幾種不同的攻擊方式然後每隊每個都試一下
防禦的部分倒是沒什麼太大的進展

後來我發現抄別隊的WAF好像比較快
所以後來整個流程大概就變成這樣
跑腳本->看到有隊伍打不下來->看他們的 WAF->更新腳本 bypass 掉->抄他們的 WAF
感謝其他隊伍讓我有免費的 WAF 可以用

中午之後就新釋出了一個 KoH 題 World of Words
題目本身是個 2D 的網頁遊戲,透過 ws做連線
目的就是想辦法多殺人拿分數這樣
不過由於我還在弄 PyJail,所以只能稍微看過一下他前端的 source code
大部分時間都靠隊友人工操作跟其他隊的外掛拚搏
第一天剩下的時間都這樣玩還能拿到50%的分數

PyJail 到了下午發現服務變超慢
一回合內無法打完所有隊伍
後來我是開 thread 去解決這個問題
第一天到了最後有辦法拿到每一隊的 flag
當天比賽結束時聽主辦方說每一回合的 request 數到了 60000 個…
不知道是哪一隊在那邊 dos…

比賽結束回到家就一直在研究 World of Words
其實在賽中就注意到了題目有一個可以讓你 Arbitrary File Read 的點
所以第一件事就是把後端的 code 全部 dump 出來研究
研究完後就是自己用 node 弄一個 ws 的 client
其中有發現遊戲有幾個漏洞
包括瞬移、進遊戲瞬間拿所有裝備、沒有道具的情況下使用道具等
然後在進遊戲的瞬間便可以得到整個遊戲的資訊,像是寶箱位置以及所有玩家的資訊這樣

本來是想說可以弄一個自動使用道具然後瘋狂瞬移殺人的 bot
但研究完後時間其實就已經很晚了
腳本也只寫了一半,雖然隊友說要幫忙續寫,不過我隊友也不會寫 node…
而且我讓他們跟我一起研究後端的 code 好像也沒人理我…
之後就去睡覺ㄌ

第二天

早上比賽剛開始的時候其他隊還沒開始上 WAF
所以 PyJail 過幾個 round 就上到第一了
之後發現別人的 WAF裡加了 audithook
audithook 的文檔
主要就是動態檢查執行的動作裡面有沒有包含 flag.txt
基本上就很難繞了
所以我也就直接把這 WAF 拿來用ㄌ

之後就去繼續寫 World of Words 的腳本
但發現隊友幾乎什麼都沒加
然後昨天晚上測試的開寶箱的封包今天就沒用了
只好先弄到處瞬移的腳本拿移動分

到了中午,由於有隊伍一直在 dos PyJail
所以被加上了 hashcash 的 PoW
並且主辦方也多開了一個 KoH 新題 Lottery
是一個跟隨機相關的題目
我們也是在這個時候狀態急轉直下ㄉ

首先PoW我在網路上找到一個 Python 腳本去算
但是卻造成算一次要花 30 秒到一分鐘
一回合內根本打不完,開多執行緒去也只是讓他算更慢

再來我的隊友不太會隨機,所以新開的 KoH 我們拿不到什麼分
並且 World of Words 寫好的腳本越來越多,我們的分數越來越低
而我還在處理 PoW 的東西
直接導致我們有三題爆掉
到了比賽剩下 30 分鐘我基本上算是躺平了

最後只能拿到 11 名
不過由於在 World of Words 拿到的成就最多所以多拿了一個特別獎?!

結語

賽後在 dc 閒聊的時候問到 PoW 相關的問題
發現用 cmdline tool 幾秒鐘就能算好了
兩個字
大失算

這次的經驗算蠻有趣的
希望明年就能拿到前三了
感謝我的隊友淺羽星夜、afan、FlyDragonOuO的貢獻