Androidのgdb
Mersenne Twisterの状態復元
Mersenne Twisterを暗号用途に使ってはいけないみたいなことはどこ行っても書いてあるけど実際まとまった数の乱数からMTの内部状態を復元するコードはなかなか見つからなかったのでいろんなところのコードをまとめてテストできるような感じにした。
https://github.com/misodengaku/mt_reverse
SECCON 2014 オンライン予選に出た
今回もチーム竹田氏で出ようと思ったらチーム名にマルチバイト文字が使えないとか言われたので仕方なくMr.Takedaとして出て、結果は2303ptで4位だった。
公式発表はまだだけど今年も全国大会行けるっぽい?→行けるっぽいです SECCON メールマガジン【Vol.04】
このパケットを解析せよ 100pt
FTPのパケットを記録したpcapngが渡される。中身を見てみるとFTPでflag.txtをダウンロードしているのでflag.txtの中身を転送しているパケットを見つけ出す。
明らかに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 --"で次のような出力が出る。
FLAG: EnjoySQLi
ただこれはプロセスのメモリダンプして眺めるだけで答え出たりもしたっぽい、いろいろあるなぁ
Print it! 300pt
ジャンルUnknownということで知識というよりは気づきの問題みたいな感じ。
チーム全員でEPSじゃねぇのか印刷すると何かあるんじゃないかとか散々議論していたところでふと「そういえば3Dプリンタあったよな?」と思い3Dプリンタのファイル形式を調べた結果STLファイルなる形式の存在に行き着いた。
ずいぶん前に専用のソフトウェアを入れていたことを思いだしたので読み込ませたら次のようなオブジェクトが表示された。
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な方に突入した後だった。
でも単純に文字列出すだけで特にしがらみもなさそうだったのでprintfをFLAGの方へのJMPへ書き換えて実行したら通った。
FLAG: Salamander
あ、危ないっ 1 100pt
BASIC認証でのやりとりが記録されたpcapを渡されるので読んで、pcap中に記録されてるサーバにアクセスして入手した認証情報を使用してログイン、という感じの典型的なアレ。
ただ、運営側が途中でアナウンスを入れた通りそのサーバ側が落ちていて(立ち上がってなかった?)、それまで絶対に解けない状態になっていた。
立ち上がったよーとのアナウンスを受けて即ログイン、難なくクリアとなった。
FLAG: Hello_basic_auth
まとめ
最終的に同率1位が3人の下で4位でした。後から見てみるとbinary100の1問目はただのdocxだったりして解ける問題があるのに見てなくて解けなかったみたいな問題があってつらかった。
久しぶりにCTFやったけどやっぱり面白いなと思いました。50分とか一瞬だった。
これからも初心者として精進していこうなという感じ
Xposedモジュール書く時に使うアレ
SDK Manager立ち上げてTools->Manage Add-on Sites->User Defined Sites->Newでhttps://raw.github.com/grantland/xposed-add-on/master/repository/addon.xmlを追加
その後Android 4.4.2あたりのツリーからXposed Bridge APIsを見付けてインストール
rootでスクヘス
Xposedでなんとかするアレを書いたんだけど忘れてたので宣伝
https://github.com/misodengaku/LoveLiveSIFPatcher