CyberRebeatCTF に参加しました!
はじめに
タイトルの通り CyberRebeatCTF に参加しました! " CyberRebeat " というノベルゲームの英語版が Steam ででたようで、その祝いとして開催されたようです。
自分は「ソロリンピック」とかいうクソださチーム名でその名の通り一人で参加してました。一つのジャンルに集中できないので大変でした...。順位は 3338 点で全体 25 位で健闘はできたのかな~とは思っています。今度は複数人で参加したいですね。
あとゲーム作りたいです。
以下 Write-up です。
Exercise (Exercise 10)
Rotation (Crypto 10)
P4P6S{} が CRCTF{} だろうなーって予想してエスパーしました。
FLAG.encrypted (Crypto 200)
普通の RSA で安心しました。公開鍵と暗号文が渡され、公開鍵を見てみると明らかに e の値が大きかったので Wiener's Attack でやりました。
SimpleBinary (Binary 100)
起動しても何も起こらないので gdb でチラーって見てたらなんかでてきました。
Readme (Misc 100)
恐らく一番下の行が CRCTF から始まっていて形が似ていることがわかるので読みます。
Calcuration (Programming 10)
netcat で接続すると "11 + 6 - 2 + 3" などの式が与えられるのでそれに答えるだけです。
途中で eval のエラーがでて見てみるとフラグだったのでこんな感じでいくかーって感じでした。よくないです。
あと普通に socket でいいです(pwntools にしたせいで逆に手間取ってしまいました)(練習したかったのです)
Prime Factor (Programming 100)
数字が与えられるのでそれの最大の素因数を一定時間内で求めよという問題でした。素数判定するのが面倒だったので力技で時間と勝負しました。楽しかったです。
Python だと素因数のリストを求めてくれるライブラリとかありそうですね。
Visual Novels (Programming 200)
Reading Power とノベルゲームのコストと満足度が与えられます。Reading Power 以内のコストで最大の満足度を得られるような組み合わせの時の満足度を求めよという問題でした。ノベルゲームの数がそこまで多くなかったので無理やり愚直な方法でとりあえず解きました。駄目ですね。
あとこの問題ではエラーでフラグを見るみたいなのができなかったので適当に数を指定してフラグとぶつかるようにしてました。これまたよくない。 後で綺麗にする予定です。
Tweet (Recon 10)
CyberRebeatScripts (Recon 100)
GitHub でアカウントを検索するとでてきたのでリポジトリをとりあえず見ました。問題と同名のリポジトリがあったのでコミットを確認するとフラグを消しているのが見つかりました。はい。
ChangeHistory (Recon 100)
消した commit のハッシュが与えられるので ChangeHistory リポジトリの commit の URL にそのハッシュを追加すると見れます。ドクペ。
Secret.pdf (Stegano 10)
pdf 開いたら黒塗りの後ろがコピーできたのでぺってやりました。
Alpha (Stegano 100)
名前が名前だったのでαチャンネル抽出したらでました。
Monero (Trivia 10)
-----------------------------------------------------------------------------------------------------------------
ウェブ上からMoneroを発掘するソフトウェア。
日本で、自身のウェブサイト上にこのソフトを設置した何人かのユーザが逮捕されている。
-----------------------------------------------------------------------------------------------------------------
coinhive ですね。
Crossword (Trivia 100)
最初面倒そうだと思ってましたがやってみたら意外と簡単だったのでよかったです。
CRCTF{SUBMARINE}
White page (Web 100)
サイトを開いても LOGIN ボタンしか出てきませんでした。
入力ボックスらしきものが visibility:hidden となっていたのでそれを消してあげて、元々与えられていた ID とパスワードで入るとフラグゲットです。
どうでもいいですが Whitespace が頭から離れませんでした。
Let's Tweet! (Web 100)
Twitter は得意です。
Uploader (Web 100)
アクセスすると複数個のファイルと下のような感じでした。
検索ボックスに ' とか入れてあげるとなんかエラーがでてきました。
SQL インジェクションだなーなんて思いながら検索ボックスに下のようなのをいれました。
すると下の画像のように、先ほどのページに secret.zip というのが現れました。
それをダウンロードして解凍しようとするとパスワードが要求されたのでバカな自分はとりあえずブルートフォースを仕掛けようとしてましたがいつまでたっても終わりませんでした。元々与えられていた UserID と Password を試していなかったので guest, guest でログインすると、
つまり secret.zip の持ち主の harada という ID にログインできればオッケーということです。自分はまだ User:harada のパスワードを知らないのでこれも SQL インジェクションかなーなんて思ってました。
こんな感じに入力したらユーザーの情報がとれたので harada のパスワードが seishin0129 だということがわかります。
それでログインすれば secret.zip のパスワードもわかるのでフラグが入手できます!
感想
Binary 問を後回しにして最初は別のところからいっていたのですが、やっぱり最初にやるべきでした。結局やり始めたのは二日目からなのですが思っていた以上に時間がなくて解けそうだった問題も解けないままになってしまいました。個人的にフィボナッチ数の xor とるやつは解きたかったです。ただ、勉強したかいがあったのか苦手な SQL インジェクション問が解けたのはちょっぴり嬉しかったりします。
あと CTF とかは一人で参加するのは厳しいなーととても思いました。一人でやると全部に手を回さなければいけなくなるので得意なジャンルでゴーっと解くことができないのがきつかったです。CTF お友達がほしいです。