神盾盃2023初賽
Jail1
Source code
1 |
|
Recon
應該是基本的jail escape,可以看到source code中擋掉了flag string,所以可以直接用萬用字元一樣畫葫蘆就拿到flag,水題中的水題
Exploit
1 |
|
Flag: AEGIS{600d_j0b_70_byp455_fl46}
Jail2
Background
SSTI
Source Code
1 |
|
Recon
也是水題,既然block掉__builtins__ function,代表我們沒辦法使用print之類的function,但和前面的邏輯一樣,自己import就好
Exploit - SSTI
1 |
|
Flag: AEGIS{und3rl1n3\_c4n\_d0\_4\_l07_7h1n65}
Jail3
Background
Source Code
1 |
|
Recon
這一題承接上一題,不只block __builtins__ function,更不能輸入任何ascii letters,所以沒有解出來,我在想有沒有類似jsfuck的東西可以scramble python code或是一些magic method是不需要字母的
Exploit - 賽後解
賽後有跟其他隊伍交流一下這一題,用的方法其實就是換個encoding或是字形,實際的手法也是採用原本的SSTI,而前半段的方式有點像是splitline寫的Domain Obfuscator,把一些常見的字元換掉,在trytry看本地端可不可以過,我是採用和提供payload的朋朋一樣的字形(可以參考這個網站)$\to$().__𝖈𝖑𝖆𝖘𝖘__.__𝖇𝖆𝖘𝖊𝖘__[0].__𝖘𝖚𝖇𝖈𝖑𝖆𝖘𝖘𝖊𝖘__()[127].__𝖎𝖓𝖎𝖙__.__𝖌𝖑𝖔𝖇𝖆𝖑𝖘__
但後面的部分就沒辦法用相同的辦法構造,不過python也支援用八進制表示ascii,所以轉換一下就可以拿到flag
$ echo FLAG{test_123} > flag.txt
$ echo "().__𝖈𝖑𝖆𝖘𝖘__.__𝖇𝖆𝖘𝖊𝖘__[0].__𝖘𝖚𝖇𝖈𝖑𝖆𝖘𝖘𝖊𝖘__()[127].__𝖎𝖓𝖎𝖙__.__𝖌𝖑𝖔𝖇𝖆𝖑𝖘__['\145\170\145\143\154']('/\142\151\156/\143\141\164', '\143\141\164', './\146\154\141\147.\164\170\164')" | python jail.py
AEGIS> FLAG{test_123}
Hidden Sheet
Recon
這一題只有給兩個google sheet,但仔細看會發現其中一個worklist(也就是flag)是被隱藏的我們看不到也不能切換過去,應該是沒有開放權限的關係,所以我們可以直接用一些功能確認其中的內容為何
Exploit
利用google spreadsheat的 尋找與取代功能 爆搜隱藏的sheet 「flag」,AEGIS{xx…x},{
在E1,}
在AJ1,接著就慢慢報搜
Flag: AEGIS{G00gl3_5h33t5_15_v3Ry_p0Pul4r}
Peko
Attached Files
:::spoiler message
1 |
|
::: :::spoiler flag.peko
1 |
|
:::
Recon
他會先用itertool產生16種不同的peko(就是大小寫不一樣),然後可以對應hex,接著阿把flag中每一個字元,用04x的方式產生,假設是字元A,就會是0041,然後會把每一個字元用peko表示,我是想說可以直接隨便assign不同的peko,然後在字頻分析但這樣行不通,因為peko是已經變成hex的結果再轉變成peko,不是單純的ascii
Exploit from 劉沛凡
賽後有和沛凡求解這一題,就是字頻分析,然後抓出不同的peko對應到哪一個hex digit這樣
1 |
|
Flag: AEGIS{HA↗HA↘HA↗HA↘_you_really_understand_what_does_the_peko_mean!!!!}
which e
Source Code
1 |
|
Recon
這題直覺應該是共模攻擊,詳細可以看模數相關攻擊 - CTF Wiki,反正他有很多的e,每一個e如果都除以3都會是prime,也就是達成了這個攻擊的條件,$e_1$,$e_2$互質/$N$相同/也拿到$c_1$,$c_2$,我寫的script如下,但不知道是哪邊出了問題 \(c_1=m^{e_1}\ (mod\ N)\\ c_2=m^{e_2}\ (mod\ N)\\ \because s*({e_1\over 3}) + t*({e_2\over 3}) = 1(歐基里德擴展)\\ \therefore s*e_1 + t* e_2 = 3\\ c_1^s * c_2^t = m^{e_1\cdot s+e_2\cdot t} = m^3\ (mod\ N)\) :::info [23/10/23 更新]: 賽後有和沛凡和asef討論這個題目,終於知道問題出在哪邊,當我們解出$m^3$時,要記得$mod\ n$,然後找到$m$的方式就是暴力搜,暴力搜得意思是因為我們拿到的$m^3$其實是$mod\ N$的結果,代表要找到真正的flag可能要再加上數個$N$才會是原本的flag,也就是$flag \equiv m^3\ (mod\ N)\to flag=k\cdot N+m^3|k\in \mathbb{Z}$,所以我們只要暴力找到那個$k$使得$m^3$開三次方根是整數就代表我們找到真正的flag了 :::
Exploit Refer apart from 劉沛凡 & @asef
1 |
|
Flag: AEGIS{ju57_bru73_f0rc3_4nd_36cd_anVzdF9ic}
Computer
Source Code
:::spoiler Source Code
1 |
|
:::
Recon
這一題主要是LFI的洞,然後查看封包會發現只要輸入的參數component內容中有帶入cpu|gpu|hd|io|ram|psu
等特定字,就會過preg_match,然後我們可以加上../flag.php
之類的路徑,最後他會吐出該檔案中的內容(如果該檔案存在)
Exploit - LFI
這一題不知道為啥在本地端自己測試的時候會成功讀取到flag,但是在server side就爛掉了
1 |
|
🍎🍌🍉🍎🍌🍉
Recon
這一題有非常明顯的XSS,用burp看package直接把參數換成script tag就好,然後…,就沒有然後了,我不會後續的利用 QAQ
Exploit - XSS
1 |
|
:::info 23/10/22 更新: 今天有跟Kaibro聊一下這一題,如果是XSS的洞通常連不到後端,因為本身就只是前端的洞,不過如果可以利用一些社交工程或是session hijacking的技術拿到後端的帳密,也是有不錯的傷害,但我猜這一題應該不是考XSS,應該還有其他更明顯的洞 :::
Kill 4
Source Code
:::spoiler
1 |
|
:::
Recon
是一隻scramble過的power shell code,要慢慢逆,可以直接跑動態,但不知道為啥,跑到第56行會跑超久