OxOmisosiruのブログ

競プロ関連の記事を書くと思います。多分。

初めてCTFコンテストに出ました(SECCON Beginners CTF 2023 参加記)

こんにちは。

今回初めてCTFのコンテストに出たのでその感想とかを書きます。

いつか強くなって振り返ったときに初心に帰る用です。強くなれるとは言っていません。

注意:SECCON Beginners CTF 2023 のネタバレを含みます。(一部問題の解法含む)

謝罪:この記事はwriteupを書くために書かれたものではありません。writeupを見る目的の方は他の記事をあたってもらえると良いかと思われます。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

どなたかチームで出ませんかツイートをしたものの誰も集まらず一人で出る予定だったのですが直前でフォロワーの方が声をかけてくださって2人チームとして出ることになりました。ありがとうございました。心強すぎる。

 

<開始前>

 

適当にツイートして開始を待ちます。

1週間前に詳解本を買っていましたが,全然読み進められていないので実質ノー勉です。cpawCTFとかでちょっと解いてはいましたが体系的に学んだことはほとんどなくといった感じで初陣でした。

 

<開始>

 

Welcome を通しました。(日本時間14:01)

全問 Welcome だったりしないかなと思ったが全然そんなことはなかったです。

 

相方が Crypto 得意ですので完全に任せて私は他の問題を見ることに。とりあえず解いたのは Half(reversing,Beginner) でした。

まず思ったこととしては,

・.tar.gz ←何?

・配布ファイルの横の文字列 ←何?

でした。実戦練習が無さ過ぎて拡張子にビビる人と申します。

ググると.gzが解凍できるらしいです。

.tarってなんだよ…と思いつつ適当にコマンドを打つか~と思ってstrings打ったらフラグでましたありがとう。初手でめちゃめちゃ困りました。 (14:38)

前提に立ててないみたいな問題が多くて最初はモヤモヤしてました。(バイナリファイル,動かしてみると…?実行しながら解析できるツールを~ ←まず動かせないのですが みたいな)

 

私が Half を通している間に相方の方は CoughingFox2 と Conquer を通していました。私は一体…?

 

次に目を通したのは Forbidden(web,Beginner) でした。

謎文字列は無視してとりあえず.tar.gzをダウンロードして,.gzを解凍。strings をかけるとなんかたくさん文字が出てきたので適当なテキストエディタ(サクラエディタ)で開いて中身を確認しました。ぱっと見た感じflagという文字列があればダメみたいなので/FLAGにして飛びました。F12押しても見えなかったページだしそんなことあるんか?と思いましたが冷静に考えたらそんなことありますね。F12で見えなくてもいいじゃんねということでフラグを獲得しました。(15:04)

 

私が Forbidden を通している間に相方の方は switchable_cat を FA していました。え?畏敬。

 

次に poem(pwnable,Beginner) , YARO(misc,Beginner), aiwaf(web,Easy) に目を通しました。

 

分からん!!!!!!!!!!!

 

分からないですね,はい。

 

ちなみに.tarも解凍できると知ったのはこの時(開始から2時間が経った頃)でした。解凍できると知ってひっくりかえりました。

 

poemも中身見てみて,-1とか入れましたが配列外参照でセグフォが起きてそれはそう…で詰んでいました。

YARO,中身見てPythonでインポートとかしようとしたが如何せん私のpython環境のPATHの設定がミスってるため中々上手くいかず頓挫しました。諦めんなよ。

aiwaf,普段pythonをなんとなくで読んでいるツケが回ってきました。普通になんもわからない。検知される方法しか分からなかったです👻。

 

唸っているうちに相方の方が cooking(crypto,Hard) を通していました。Crypto_GODに改名してみてはいかがですか。その時点でのチーム順位は10位でした。ええ…。

 

仰天しているうちに相方の方が poem,YARO,aiwaf (17:45)を通してくれました。チーム名の75%が私成分なの申し訳なくなってきました。99%あげます。

 

poemは配列外参照を利用(?)して -4 を入れればフラグ出るらしいです。アドレスの値的に配列外参照をすることでflagを参照できるようになるとのこと。「配列外参照はダメ」くらいの知識しかなく普通に目から鱗でした。もっとプログラミング勉強せねば…。

 

YARO は相方の方の解法をざっと聞いたのですがどうして分かるのかが分かりませんでした!いかがでしたか。writeup読むなりして勉強します。

 

aiwaf のコード内の[:50]って先頭50文字みたいな意味らしく,そこが分かればワンチャンあったなあとは思いました。知らんこといっぱいのコードでもしっかり読むことの大切さを実感しました。CTF,ありがとうございます。

 

ほえーすごいと言いながら Poker(reversing,Medium) を考えていました。

まあ結局フラグは入手できなかったのですが。

あいこと負けで持ち点0点になるという闇のゲームです。

strings だけではさすがに太刀打ちできなくなったのでググってみたところ,IDAとかGhidraというものがあるらしいので,頑張ってインストールして使ってみました。

コンパイルありがたすぎる。なんとか関係ありそうな部分は読めた感じがしました。

「ランダムで勝敗決めてそうで,勝ったら1点加算,負けかあいこで0点になる」

というルールそうなので,1点加算の部分をクソデカ点加算にすれば運でもなんとかなりそうです。慣れない手つきでその1の部分を探し出しやっとの思いでhexeditorで編集をし01→0Fとか(99にすると負になった それはそう)にして,保存。うおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおいけえええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええ$sudo ./Poker/pokerrrrいけいけいけいけいけいけいけいけいけいけ$sudo: ./Poker/pokerrrr: command not found!エ???!?!??!?!?!?!?!?!!!????!?!?!?!?!??!?!?!?!?!!??!???!?!??!?!?!?!?!?!!!?!???!?!??!?!?!?!?!?!!!?!???!?!??!?!?!?!?!?!!!?!???!?!??!?!?!?!?!?!!!?!???!?!??!?!?!?!?!?!!!?!???!?!??!?!?!?!?!?!!!?!???!?!??!?!?!?!?!?!!!?!???!?!??!?!?!?!?!?!!!?!???!?!??!?!?!?!?!?!!!?

 

…。

 

………。

 

終わった…。 (スラムダンクの画像)

 

終わりました。編集前の実行ファイルはちゃんと実行できました。どうして??????????????(これ本当に謎なのでどなたかこれを読んでいる方で分かる方がいれば教えていただけると大変助かります。)

Poker はここで詰みました。根本的に間違ってなければ惜しいところまでは行ってそう(ほんとか?)なので悔しいです。後でwriteup読みます。

 

悪あがきで Three(reversing,Easy) にも取り組みました。

Ghidraで逆コンパイルしたものを読むと,どうやら flag_01 , flag_02 , flag_03 を順番に1文字ずつ取ったものを最終的なフラグ文字列としているようです。最初の3文字を試しに16進数から戻してみてctfが出たときのアドレナリンのドバドバ感はヤバかったです。生きてて良かった…………………………………………………………………………。

うまいやり方をやる前に手を動かした方が早いということで45文字手打ちしました。解けました。やったあ。気持ち良すぎる。(22:45)

 

Leak(web,Medium) にも取り組みました。これ知ってる!Wireshark使うやつでしょ!と思って意気揚々と開いたものの,対話で出てきた1つの謎文字列だけ得られて終了…。何だったんだ。

 

ここでコンテスト終了でした。

 

結果としては,

私:Welcome(50pts) , Half(50pts) , Forbidden(56pts) , Three(65pts) TOTAL:221pts

相方の方:CoughingFox2(58pts) , Conquer(84pts) , switchable_cat(179pts) , cooking(221pts) , poem(65pts) , YARO(74pts) , aiwaf(68pts) TOTAL: 681pts←強すぎる

を正解し,最終順位は 79 位でした。相方の方が強すぎる。イキってないですがイキってすみませんでした…。

 

CTF初心者of初心者ですが,見えないものを手探りでも見えるようにしていく,そんな面白さがあるように感じます。こういうのすき。

writeupなど読みつつ知識を増やしていきたい所存です。初めてCTFのコンテストに参加しましたが,とても楽しかったです。次回も是非参加したいです。Medium問題解けるようになりたいですね。

 

以上です。

ここまで読んでくださりありがとうございました。