TDUCTF-2015に参加させて頂いた
タイトル通りTDUCTF2015に参加しました。今回で前身含め4回目のTDUCTFへの参加となります。
ほとんど解けなかったのですが、自分の備忘録としてメモさせて頂きます。
では
問題名:String Compare
.exeを渡されるのでそこからflagを探す問題。最初、全くexeが実行出来ずに(IDAでも開けなかった)四苦八苦した。終了30分前ぐらいに、そういえばメールでこれは入れておけよっていうのが来てた事を思い出し確認してみると、「Visual Studio 2015 の Visual C++ 再頒布可能パッケージ」がPCに入っていなかった。2010~2013まで入っていたので完全に見落としていた。2015C++ x86を入れたら普通に動くようになったので、さっそくIDAに投げた。まずはStrings Window(Shift+F12)を眺めてみる。「Congratulations!\nyou can get flag!」
とかいう文字列があるので、それを用いてるところに飛ぶ。
ぱっと見flagぽい文字列は見当たらないので分岐直前で呼び出している「sub_401000」を覗くとそれらしき文字列となにやらループ処理してるので、とりあえず実行して文字列を渡すと
ということでflagは
「TDU{41A91A82F42C2B593623B420953C73572BEDC2E45165162CC856FB1BA57BD410}」
問題名:Lie
問題文にリンクがあるので飛ぶと、Are you pro?と書かれた下にクッキーの画像が貼ってあるページに...
画像クッキーだしcookieになんかあるやろ!とか思って見ると、このページはcookieがありませんとか言われた...
しばらく経過してもう一度チャレンジしたらcookieがいらっしゃったので見てみると、「False」とだけ書かれてたので嘘つけばいいらしいのでTrueに書き換えたらflagでました。因みにcookieが最初いなかった理由はプライベートブラウジングにしていたせいだったのかなぁ...と...
flagは
「TDU{H3IsPr0c}」
問題名:14:50
14時50分に動画が流れ始めるので視聴してFlagをメモる問題。
flagは「TDU{試される大地}」
競技終了後、もう1つのFlagがあることを知りました。もう1つのFlagはなんだったのだろうか...
問題名:SQL Practice
入力されたSQL文を発行してくれるページにて@nomuken氏のtweetからflagを探す問題。ただSELECT文を使うだけでした。
select * from tweets where text like '%TDU{%'
Flagはメモを忘れたのでなんだか解りませんが...
問題名:ESPer
問題文には「Charlotte」としか書いてありませんでした。問題名がESPerなので超能力者かつ事実上の友利奈緒である柚子胡椒氏(@mzyy94)が運営にいたので迷わず
TDU{友利奈緒}
でsubmitしたら通りました。これは完全に普段からCharlotteのアニメを見ながらtwitterをやっているかで苦戦したりしなかったりだったのではないでしょうか...
知り合いとかは英語でsubmitしまくっていたみたいですけど結局駄目だったとか...
問題名:picture message
問題文に新しい問題が追加されたのでbase64でデコードしたら50点分貰えました。
因みにFlagであるURLのリンク先へ飛ぶと電子透かしがどうとか書いてあるので、本題のほうは電子透かしで頑張るのかな~と思ったけどチャレンジしませんでした。
以上で解けた問題になります。最終得点はこんな感じでした。
運営の皆様、徹夜などをしてまでの設営・作問本当にお疲れ様です!お陰様で楽しくCTFをプレイすることが出来ました!結果はいいとは言えないですけど、楽しめたので良かったのかな~と思っております。CTFの会場といい、懇親会の物資といい、参加費が無料とは、さくらインターネットって凄いですね...
では、簡単なwriteupでしたが(writeupと呼べるのか知らんけどメモだし...)終わりになります。解法が分かっているものがあるのである程度たまったら追記でメモりたいと考えております。
本当に皆様お疲れ様でした!
追記
問題名:String Encoder no.1
競技中ではプログラムが起動しないという有様でしたが、どうやらスコアサーバーから落とすと破損する模様...リンクをブラウザにぶち込んでDLすれば良かったんですね...
というわけで、破損してないものを手に入れたらちゃんと動きました!良かった良かった!
問題文は特に無かったと記憶しております。DLリンクがあってstring_encoder_lv1.exeとencodedFile.txtが配布されるといった感じでしたかね...
encodedFileの中身です。見事にencodeされていますね。
バイナリ問題ですので起動出来ることを確認したらIDAに投げます。まずは、StringsWindowを見ますがあからさまなencodedFileみたいなの配られてますし、怪しい文字列は見つかりませんでした。代わりにopenFile.txtとencodedFile.txtという文字列があったので、2つのファイルが必要だと思われます。
main文の中を見ていくと、実際に2つのファイルに対してfopenを呼んでいるので予想があっていました。しかし、配布されたのは1つのファイルだけなので、openFileの中身を復元する問題なのかなと...
色々試した結果解った事なのですが、処理を追っていくとopenFileの中身の文字コードに対して20を足してencodedFIleに出力しています。どうなるかと言うと、
openFileの中身が「A」という文字のみならば「U」という文字がencodedFileに出力されるといったような感じでした。
ならば最初のencodedFileの中身を-20していけばflagが得られるのでは...ってことで、
TDU{Welcome_to_TDUCTF's_string_encoder!}
でした。