(昨日 の続きです)
最終的に 2507 点、13 チーム中 4 位で終わりました。やったね!
開始直後 2 位から、徹夜で問題を持ち帰っていじっていた連中が一気に通していった所為で 7 位に転落して諦めていたけど、なんだかんだ最終的に 4 位まで戻れた。
(うちのチームは家等で問題の続きをやったりは全くしなかった)
自力で解いた問題
-
"newcomer architecture" (400, バイナリ)
- ファイルは軽量 Ruby こと mruby の中で使われてる VM, RiteVM のバイトコード, RiteBinary (mrb) ファイル。
- mruby を取ってきてビルドしたが、当時の HEAD だと OS X でビルドが通らなかった。Linux でも malloc 周りでいろいろ問題が出てたっぽいですね。OS X でビルドが通らなかったのは、ちょっとHEAD を巻き戻して解決。
- 普通の Ruby で動くスクリプトをそのままコンパイルしただけなので、
Kernel.#gets
とかがないせいで NoMethodError で普通に実行すると落ちます --verbose
をつけるとバイトコードを人間に読める形にダンプしてくれるので、あとはOP_*
を見ながら気合で手動で Ruby スクリプトを書いて行きました- key を入力して、key に対して一文字ずつ処理をして、encrypted_message の同じ位置の文字と等しくないならエラーを出す形
- encrypted_message.each を叩いて、1文字ずつブルートフォースした
-
コマンドインジェクションの奴 (300, Web)
' || echo hi
で hi と出力される事を確認。- エラー出力をリダイレクトしたりする必要があったので
' || コマンド 2>&1 #
という形で実行して探っていく事にした - 見当たるホームディレクトリは
/home/ctf4
のみ。しかし、ユーザーが違って読み取り権限がないため permission denied. cat /etc/sudoers
すると、あるユーザーは ctf4 で/bin/ls
,/bin/cat
を NOPASSWD で実行する事が許可されていたid
するとそのユーザーは自分だった。sudo -u ctf4 /bin/ls /home/ctf4
してファイルを確認、sudo -u ctf4 /bin/cat /home/ctf4/kotae.txt
を実行して答えを取得。
-
うるう秒の奴 (OS)
-
ググったら
xtime_lock
という変数が怪しい事がわかる ("linux 2.6.21 leap second deadlock" とかでググった) -
objdump -DlF vmlinuz|grep xtime_lock
で先頭のアドレス的な奴を入力してたら通った。
-
協力して解いた問題
-
SQL インジェクションの奴 (400, Web)
- ログインには一瞬で成功して、そして @tyage 君がパスワードを表示する所までやってくれた。
- でもログインできず。
- ヒントで出るまでわからなかったが、パスワードは暗号化されていた。確かにターゲットのユーザーのパスワードのバイトをちょっとズラしていくと
pa{sword
みたいな感じ(うろおぼえ)になって怪しいなとは思ったが、その元のその部分をググったら ROT13 だった。アルファベットで13文字ズラす。 - 通った!
-
OOM Killer の奴 (OS)
- 手元に VMware がなかったので、
malloc
とfork
で爆弾を作ってもらった。1 分放置してもだめで諦めかけていたが、適当にもっと放置してたらいつのまにか答えが出ていた。
- 手元に VMware がなかったので、
こんなところ。
まとめ
運営の皆さんと他のチームの皆さんもお疲れ様でした。とても楽しかったです!