SECCON 2015 オンライン予選 Writeup
SECCON 2015 オンライン予選にチームPing-Micで参加しました。 僕にとって初めてのPing-Micでの活動になります。
※友利奈緒ですがTomoriNaoとしての参加は見送りました><
結果は1100 pts で170位でした。すぐ上にkatagaitaiがいたのはなんとも偶然…
まあリーダーが日曜日お出かけしていたり、メンバが忙しそうだったのでしゃあないって感じですね。
僕がフラグを取った650点分のWriteup書きます。
- Start SECCON CTF (50)
- SECCON WARS 2015 (100)
- Exec dmesg (300)
- Steganography 1 (100)
- Steganography 3 (100) ※チームメイトにヒントもらった
Start SECCON CTF (50)
1対1対応で対応していたのでそれを見ながらちまちまやりました
ex1 Cipher:PXFR}QIVTMSZCNDKUWAGJB{LHYEO Plain: ABCDEFGHIJKLMNOPQRSTUVWXYZ{} ex2 Cipher:EV}ZZD{DWZRA}FFDNFGQO Plain: {HELLOWORLDSECCONCTF} quiz Cipher:A}FFDNEVPFSGV}KZPN}GO Plain: ????????????????????? SECCON{HACKTHEPLACET}
SECCON WARS 2015 (100)
文字が後ろで流れていて、前面にボケたQRコードが出てくる動画が示されていました。 youtube-dlでダウンロードして、ffmpegでシーケンスで書き出し、何十枚か選んでPhoshopで開きます。 正確には1つのキャンバスの上に何十枚か「配置」しました。
QRコードの黒マスが有る場所は必ず暗いのでレイヤー合成を「比較(明)」にすれば結構綺麗に出てきます。 あとはスマホアプリで認識させて終了です。
Exec dmesg (300)
TinyCore Linux のisoイメージが渡されたので、Virtual Boxでブートしました。 シェルやコマンドはbusyboxで提供されているのですが、applet not found とか言ってdmesgコマンドを実行できません。 コマンドがあるように見えて実は容量を気にして入れないことがあるそうです(ソース)。
方法としてはbusyboxをビルドし直すのも手ですが、何かmakeが途中で止まってしまうので、util-linuxを入れて実行するという方針で行きました。
tce -wi util-linux /usr/local/bin/dmesg | /usr/local/bin/grep SECCON (結果は下の画像参照)
flag: SECCON{elf32-i386}
注意としてはこのままだとbusyboxのコマンドと置き換わらないのでwhich dmesg
で新しいコマンドのlocationを確認して実行するという点ですね。
ただ、SECCON終了後のIRCで他の解法が発言されていて、
cat /dev/kmsg | grep SECCON
- Virtual Box でブートしたらスナップショットを取って、grepする
というものでした。
1つめのは確かに同じ結果が取れました。
Steganography 1
ファイルを開くとSECCON {
としか表示されないgifのようなもの渡されました。まずファイルの構造を010 Editorのテンプレート機能で確認しました。
約1時間かけてMrFusion.gpjbからそれに紛れ込んでいる画像ファイル探して、ファイルにおこす作業をしました。 PNG, JPG, GIF, BMP は以下のサイトを参考にすればすぐ見つけられますがエディタでコピーして貼り付ける作業が大変つらいものでした><
BMPの部分が大量の0x00を含んでいるのでそれと気づくのが難しく、そこで時間取られました。
比較(明)で合成して、Please input flag like this format-->SECCON{*** ** **** ****}
とあるのでフラグは
flag: SECCON{OCT 21 2015 0728}
@mrtc0氏「バイナリから取り出すのってforemostとかで十分でないレベル?」
アッ…ハイ
sudo pacman -S foremost foremost -i MrFusion.gpjb ls output/*(D)
Steganography 3 (100)
まずAcrobatに画像中のELFのバイト列をテキスト認識させ、おかしな所は手作業で直してバイナリに落とし込みましたが、objdumpできない、実行させてもセグフォする変なバイナリでした。ちなみに010 EditorにCtrl+Shift+vすると Hex to Binary(xxd -r -p
) みたいな貼り付け方ができます。
Slackで騒いでいたらmumumu氏からいいアシストを受けられました。
mumumu「winのペイントで、白い余白の塗りつぶししたらどうなりますか?」
最初にSaiで塗ってしまって、答えが出なかったのですが(まあお絵かきソフトなので)、Photoshopで塗ったらちゃんとflagが出てきました。
まあこれはmumumu氏の手柄ですね。
運営の皆さんお疲れ様でした~楽しい24時間ありがとうございました。
↓ ↓ ↓ ↓ ↓
バイナリアン各位,おすすめの.NETのデバッガ is 何
— ふるかわ (@_N4NU_) December 6, 2015
反省会
やるだけ問の Individual Eledin を日曜の夜に解きました。坂井さんのcrossを使えば難なくいけます~(ビルドが大変なのでLinuxのイメージを使いましたが)