概要
この記事は、先週末に実施されたSECCON Beginners CTF 2023のWriteUpです。
色々あって一気に書けないので、数日かけて解けた問題から少しずつ放出します。
キレイな・完答は作問者や上位勢のwriteupに任せますので、私なりの解いた道筋を簡単に記載していきます。
開催概要
- スコアサーバURL:https://score.beginners.seccon.jp/
- 開始時刻:2023/06/03 (土) 14:00 JST
- 終了時刻:2023/06/04 (日) 14:00 JST
なお、まだしばらくはサーバーにアクセスできるようです。
復習に使用させていただきます。
とりあえず、回答できた問題を中心に記載していきます。
記録・復習用に、回答できた問題には「回答済」、できなかった問題は「未回答」と記載しておきます。
結果
今回も1マンチームで参加し、
最終結果は、297/778 th、318 point でした。
ペネトレの修行とCTFを両立するの難しいですね・・・他にもやりたい事たくさんあるし・・・
環境
Windows + Kalilinux
プログラムはすべてPython3
その他、各種ツール
welcome
Discodeのアナウンスを確認しましょう。
ctf4b{Welcome_to_SECCON_Beginners_CTF_2023!!!}
crypto
今回全然解けませんでした・・・しっかり復習します。
CoughingFox2(Beginner:未回答)
Conquer(easy:未回答)
Choice(medium:未回答)
switchable_cat(medium:未回答)
cooking(Hard:未回答)
pwnable
せめてbeginnerくらいはクリアしたかった・・・
poem(beginner:未回答)
rewriter2(easy:回答済)
Forgot_Some_Exploit(Easy:回答済)
Elementary_ROP(medium:未回答)
driver4b(medium:回答済)
No_Control(hard:回答済)
misc
YARO(Beginner:ギリギリ未回答)
サーバーにマルウェアが混入している可能性があるので、あなたの完璧なシグネチャで探してください
nc yaro.beginners.seccon.games 5003
backup
nc yaro-2.beginners.seccon.games 5003
https://score.beginners.seccon.jp/api/download?key=beginners23%2FYARO.tar.gz
hash:3e8137a394a95756b0f8f8aee5265988f3122297
時間無いって言ってるのに、1問に時間かけすぎじゃい!!!!
と自分で自分を叱った問題です。
ncで接続した先で、実際にYARAルールを記載してやると、実行してくれるアプリが動いているようです。
とりあえずフラグのフォーマットはctf4b{
と定義されているので、それを検出できるYARAルールを以下のように記述しました。
rule NumberOne
{
meta:
desc = "Sonala"
weight = 10
strings:
$c = "ctf4b{"
condition:
all of them
}
その後、何を思ったのか・・・手動で残りの文字を特定していっていました。
流れとしては、文字数を確定し、各種文字種を確定、確定させた文字種から範囲を絞って文字を確定させる・・・・焦って手動でやるくらいなら、コード書いた方が早かったんじゃ・・・
rule flag {
strings:
$ident = /ctf4b{Y[0-9a-zA-Z_]{0,28}}/
condition:
all of them
}
rule flag {
strings:
$ident = /ctf4b{Y3t_An0th3r_R34d_Opp0rtun1ty[0-9a-zA-Z_]{0,2}}/
condition:
all of them
}
rule flag {
strings:
$ident = /ctf4b{Y3t_An0th3r_R34d_Opp0rtun1ty[0-9a-zA-Z_]{2}}/
condition:
all of them
}
ctf4b{Y3t_An0th3r_R34d_Opp0rtun1ty}
polyglot4b(beginner:未回答)
shaXXX(easy:未回答)
drmsaw(medium:未回答)
polyglot4b2(medium:未回答)
treasure(hard:未回答)
web
Forbidden(beginner:回答済)
You don't have permission to access /flag on this server.
https://forbidden.beginners.seccon.games
https://score.beginners.seccon.jp/api/download?key=beginners23%2FForbidden.tar.gz
hash:018c1361937a789b327181c9a46ec574906c360c
提示されたURLへアクセスすると、flagファイルへのリンクが張ってあるのみ。
ただし、ただリンクを踏むだけだと403となりアクセスできません。
ソースコードのindex.js
を読んでみると、/flag
で完全一致している文字列のURLのアクセスが拒否されています。
ですので、例えば/FLAG
のように一部大文字にしてアクセスしてやれば、ブロックを回避できる上で実体は/flag
へのアクセスとなります。
const block = (req, res, next) => {
if (req.path.includes('/flag')) {
return res.send(403, 'Forbidden :(');
}
ctf4b{403_forbidden_403_forbidden_403}
aiwaf(easy:回答済)
AI-WAFを超えてゆけ!! ※AI-WAFは気分屋なのでハックできたりできなかったりします。
https://aiwaf.beginners.seccon.games
https://score.beginners.seccon.jp/api/download?key=beginners23%2Faiwaf.tar.gz
hash:2ce11f780bbdae5509bd80f9b3ef9d7545951f9f
double check(medium:未回答)
phisher2(medium:未回答)
oooauth(hard:未回答)
Reversing
Half(beginner:回答済)
Three(easy:未回答)
Poker(medium:回答済)
Leak(medium:未回答)
Heaven(Hard:未回答)
今後の課題・所感
- 急用ができてあまり参加できなかったですが、beginner問題すら解けていない分野がちらほらあるのがとても悔しいです。
- pwnとCryptに弱いのが課題ですね・・・・
他の方のWriteUp
復習用。独断と偏見で特に有用と感じたWriteUpを載せておきます。
とても分かり易い解説配信でした。毎度のごとく、Cryptの解説・回答スピードがすさまじいです。