SECCON 2014 オンライン予選2に出た
チームMt.Takedashiで出て1900ptの74位でした。Mtはtypoじゃないです。
本当に本戦出られるのか不安になってきた
解いたやつ
Reverse it binary 100
なんとなくJPEGっぽさを感じるので前後反転と4bitごとに反転させたら画像になった。
どう考えても合ってるのにうまくいかないなぁと思ってたらrbモードじゃなくてrモードでfopenしていた。
致命的に頭が悪いのかな
— きひろちゃん (@aki33524) 2014, 12月 2
FLAG: SECCON{6in_tex7}
余談ですがLS-Y201とかいう非常にスペシャルなカメラを扱うと異常にFF D8みたいなバイト列に敏感になります。
JPEGをシリアルポートで吐くってだけで素晴らしいのに転送速度を書き換えるとファームウェアが破損してEEPROM直に書き換えないと復旧しない本当に素晴らしいカメラでした。
REA-JUU WATCH web 200
適当にポチポチ進めてたらユーザーのスコアかなんかを固めたJSON落としてるところがあったんで見たらパスワードも一緒に落ちてきていた(http://reajuu.pwn.seccon.jp/users/chk/2229 こんなの)で、とりあえずユーザーID1のユーザー名とパスワードを抜いてログインしてまたポチポチ進めてたら解けた。
FLAG: SECCON{REA_JUU_Ji8A_NYAN}
Bleeding "Heartbleed" Test Web web 300
SECCON 2014 英語予選 Write-Up
Web 300
”Bleeding “Heartbleed” Test Web”
http://t.co/B9fJccEU6y
#seccon
@misodengaku が解いてくれたので途中まで...
— こたまご (@chibiegg) 2014, 12月 7
これの続きです。
エラーが出てるところはどうも抜いてきたメモリの内容に「" .」とかが含まれてるとエスケープされてないおかげでSQLの構文エラーになってるっぽい、ということはHeartbleedで任意の内容が返せればただのSQL Injectionになる。
HeartbleedのHoneypotでうまいこと任意の内容が返せるっぽいのでこれを使ってSQL文をブチ込んで終わり、と行きたいところだけど一見出力先がない。
ただエラーページをよく読んでみるとSQLでSELECTしているのはtimeで、デバッグメッセージで出力されているのもTIME、ということでtimeに欲しいデータをブチ込んでやれば(?)好きなデータが抜ける。
最終的には
"; SELECT name AS time FROM sqlite_master; --
みたいなSQL文でDBのテーブル一覧を抜き(1つずつしかデータが抜けないのでWHEREとかORDER BYとかでうまくやる必要はある)、ssFLGssとかいうクソ怪しいテーブルを見付けて
"; SELECT flag AS time FROM ssFLGss; --
でフラグゲット。
FLAG: SECCON{IknewIt!SQLiteAgain!!!}
最初はOpenSSLのバグってる部分書き換えてなんとかしようとかしてました。
致命的に頭が悪いのかな
— きひろちゃん (@aki33524) 2014, 12月 2
解けなかったやつ
今書いてます
まとめ
楽園追放がマジで最高なのでみなさん見ましょう