Androidのgdb

adb shellで繋いだ中からgdb使いたいなぁと思ってググってもNDKの開発がどうとか~とかgdbserverで~とかいろいろ面倒なこと言われて結局その機能はnot implementだよみたいなこと言われてマジでクソなのでメモしておく。

ここのgdbなら実機のシェル上で実行できるし一通り機能が揃っているらしくgcoreとかも動いた。

gdb for android

SECCON 2014 オンライン予選に出た

f:id:misodengaku:20140720155447p:plain

今回もチーム竹田氏で出ようと思ったらチーム名にマルチバイト文字が使えないとか言われたので仕方なくMr.Takedaとして出て、結果は2303ptで4位だった。
公式発表はまだだけど今年も全国大会行けるっぽい?→行けるっぽいです SECCON メールマガジン【Vol.04】

このパケットを解析せよ 100pt

FTPのパケットを記録したpcapngが渡される。中身を見てみるとFTPでflag.txtをダウンロードしているのでflag.txtの中身を転送しているパケットを見つけ出す。

f:id:misodengaku:20140720160100p:plain

明らかにBase64なのでデコードしてフラグゲット。

FLAG: F7P 15 N07 53CUR3

879,394bytes 100pt

フォレンジックの問題。879394バイトの画像のファイル名を答えろと言われて謎のファイルを渡されるので中身を見てみるとどうやらFATっぽい。
いろいろ考えたけど結局は879394を16進にしてリトルエンディアンで22 6B 0Dで検索して該当ファイルを見付けた。

FLAG: Chrysanthemum.jpg

捏造された契約書を暴け 300pt

これはどこのチームの誰よりも早く解答を通したので1%ボーナスがもらえた。
2012/1/1以降でデータが改ざんされた日時を答えろみたいな問題。
NTFSだったと思うけどとにかくddでダンプされたデータを渡されるのでとりあえずAutopsyで開いてみたらNTFSのUnallocatedな領域に何かある。
ダンプしたデータを眺めていたら突如として2012/05/23 13:29:00という日時が見えたので試しにsubmitしたら通った。
よくわからなくてもとりあえずsubmitしておけという教訓が生きた。

FLAG: 2012/05/23 13:29:00

箱庭SQLiチャレンジ 100pt

Twitterを眺めていたらCTF for Beginnersに参加したおかげで解けたみたいなツイートを見かけたので簡単なのかなと思ってやったらすぐできた。
"' union select flag,1,1,1,1 from seccon --"で次のような出力が出る。

f:id:misodengaku:20140720162201p:plain

FLAG: EnjoySQLi

ただこれはプロセスのメモリダンプして眺めるだけで答え出たりもしたっぽい、いろいろあるなぁ

Print it! 300pt

ジャンルUnknownということで知識というよりは気づきの問題みたいな感じ。
チーム全員でEPSじゃねぇのか印刷すると何かあるんじゃないかとか散々議論していたところでふと「そういえば3Dプリンタあったよな?」と思い3Dプリンタのファイル形式を調べた結果STLファイルなる形式の存在に行き着いた。
ずいぶん前に専用のソフトウェアを入れていたことを思いだしたので読み込ませたら次のようなオブジェクトが表示された。

f:id:misodengaku:20140720162910p:plain

FLAG: Bar1kaTaLab.

まとめ

最速突破でボーナス点入れられたのがすごく嬉しかった。実際この3点で4位に食い込めたのでよかった。
去年の全国では体調競技共に調子よくなかった感じなのであと半年ぐらいあるけどなんとかこの調子を維持していきたい

第2回 CTF for Beginners writeup

何解いたかよく覚えてないので覚えている範囲で

箱庭XSS 300pt

横浜大会の予選のWriteupをどっかで探して見て貰えばいいと思うけれども一応。
一問目はヒントにもある通りそのまま 二問目、属性値とか使えと言われたのでそのまま 三問目、「属性値のXSSイベントハンドラ、X=88(0x58)、S=83(0x53)」とヒントが与えられているにも関わらずバカなのでアホな解き方をした。 slice(8, 11)ってのは箱庭XSSのbody自体に含まれてる"XSS"という文字列を切り出してくるメソッド?で、切り出してきたXSSという文字列をalertに流し込んでやる。
なんとなく事前に配られていた箱庭XSSをやって遊んでいたときに考えたスクリプトで、どうしようもなくアホなんだけどなんだかんだ使い回しが効くので使ってみた。
少なくとも箱庭においてはsとか.が禁止されてなければ位置を調整するだけで使えるんじゃないかという気がする。

三問で箱庭はおしまいで、手を挙げたらお姉さんがフラグを教えてくれた。確か

xss_mofumofu

みたいな文字列だった気がする。

Run it! 200pt

ctf_bin5というファイルをとりあえずバイナリエディタに食わせてみたらMZだったのでOllyへ直行。
普通に起動してみるとすぐ終了してしまうプログラムなのでまぁ内容さえ見られれば楽勝かなという感じだった。
All referenced stringで検索した結果にブレークポイント仕掛けて実行したら既にInvalidな方に突入した後だった。

f:id:misodengaku:20140707012231p:plain

でも単純に文字列出すだけで特にしがらみもなさそうだったのでprintfをFLAGの方へのJMPへ書き換えて実行したら通った。

FLAG: Salamander

あ、危ないっ 1 100pt

BASIC認証でのやりとりが記録されたpcapを渡されるので読んで、pcap中に記録されてるサーバにアクセスして入手した認証情報を使用してログイン、という感じの典型的なアレ。
ただ、運営側が途中でアナウンスを入れた通りそのサーバ側が落ちていて(立ち上がってなかった?)、それまで絶対に解けない状態になっていた。
立ち上がったよーとのアナウンスを受けて即ログイン、難なくクリアとなった。

FLAG: Hello_basic_auth

まとめ

f:id:misodengaku:20140707013110p:plain

最終的に同率1位が3人の下で4位でした。後から見てみるとbinary100の1問目はただのdocxだったりして解ける問題があるのに見てなくて解けなかったみたいな問題があってつらかった。
久しぶりにCTFやったけどやっぱり面白いなと思いました。50分とか一瞬だった。
これからも初心者として精進していこうなという感じ