pt)2枚のモノクロ画像が渡される問題です。pt)暗号化するプログラムと暗号化されたフラグが与えられます。方が小さいらしいということを考慮すると、文字列をビックエンディアン的に数値変換しているだけなので、簡単に復号できます。ファイルが与えられます。したものがフラグであると書かれています。ディスクイメージが与えられます。探して切り取って実行するとおしまいです。バラバラに入れ替わった画像が与えられます。数独は適当な数独ソルバーで解きます。数独の解が地図の破片の元の位置を表しているのは容易に想像できるので、スクリプトを書いたらおしまいです。pt)何らかのテーブルのレコードを全て表示してくれるアプリケーションが与えられます。アクセスするとスタジアムのレコードが見られるようになっているようです。アクセスすると、たくさんレコードが出てきます。アクセスしてフラグを得ます。pt)音声ファイルが渡される問題です。スペクトログラムを見ます。pt)プログラム中の脆弱性を見つけて、直したものをアップロードしてチェックを受け、脆弱性がなくなっていたらフラグがもらえる、という変わった問題です。この問題はバッファオーバーフローが可能な箇所がいくつかあるので、直せばおしまい。pt)暗号化するプログラムと暗号化されたフラグが与えられます。通り試せばおしまいです。pt)カフェの写真が与えられます。カフェのロゴのデザイナーの名前を答える問題です。コードが写りこんでおり、これを読み込むと、GodForgives,AllYouHaveToDoIsAsksuctf.com/cce1/d393と書かれていることがわかります。その画像のコメントに作者の情報が埋め込まれていました。写真の日の「今日の言葉」は何かを探す問題です。コードで読み取った最初の行が答えでした。pt)パケットのキャプチャファイルが与えられます。キャプチャファイルを見ると冒頭で次のようなストーリーが確認できます。メールを送りつけます。利用した細工が施されています。リンク先は、下のようなウェブページになっています。ボタンを使って、ユーザー名とパスワードを入力することが可能で、数字の配列は毎回ランダムに配置されます。スクリプトの部分だけ抜き出すと、次のようになっています。サーバーに送っています。リンクに誘導され、ログインを試みていることがわかります。元に送られているのです。あとは、キャプチャファイルの情報を元に、操作を復元するだけです。数字の配列は次のようになっています。B-Sまた、操作の座標をプロットしてみると、次のようになっていることがわかります。あることがわかります。これを入力してフラグを得ます。コンパイルできないプログラムだったため、直してはサーバーに投げ、直してはサーバーに投げ、...とやっていました。脆弱性は、結構あった気がするのですが、投げても反応のない脆弱性もあって、よくわからなかったという感じです。(採点外?)といったところです。次のコードを投げたら通りました。ファイルが与えられ、アプリケーションのシリアルナンバーを探す問題です。暗号化されていることがわかります。暗号キーを使って暗号を解きます。参加できる時間が限られていたので、基本に忠実にやりました。pt)基本に忠実に文字列検索です。pt)基本に忠実に文字列検索です。いう便利ツールを使います。__import__('urllib2').urlopen('http://kchung.co/lol.py').read()いずれにしろ気づいてしまえば、素直にスクリプトをダウンロードするだけです。pt)基本に忠実に文字列検索です。圧縮されているのでテキストを抜き出す便利ツールを使います。pt)基本に忠実にググります。education基本に忠実にそれっぽい答えをサブミットしまくります。pt)基本に忠実にスタッフ紹介のページを見ると、答えが書いてあります。書き上がりましたが、もちろん、こんなに簡単に答えにたどり着いたわけではありません。色んな紆余曲折があったわけですが、答えを知った上でやり直してみると、簡単な問題はこんなにも簡単なのだな、という感じがします。難しい問題にチャレンジすることは、もちろん重要だと思いますし、素晴らしい経験になると思います。見た場合、簡単な問題をすらすら解ける能力というのも、大事であるように思われます。今後は、簡単な問題をすらすら解いて、難しい問題に時間を割けるようになりたいと思います。前回の挑戦では全然問題が解けず、ただただつらい思いをしていたので、戦々恐々としていたのですが、今回は何問か解けたのでよかったです。個性的で好感のもてる問題がいくつかあったので、よい出会いをしました。アクセスしたらフラグが出てきました。アクセスするとフラグが出るようです。200)ウェブ上で動作する暗号化ツールと暗号化されたメッセージが与えられるので、解読する問題です。暗号化ツールで遊んでみました。テキストとパスワードを入力すると暗号化されます。ような形式で、同じテキストとパスワードの組み合わせを入れても、結果は毎回変わります。この暗号器で遊んでみた結果、この暗号法は次の手順によって行われていることがわかりました。コードを足し合わせる。コードに直し、それぞれにパスワードを変換した数を足す。変換した列の各項に対して、足してその項になるように適当な2数に分割する。組み合わせでは、次のように暗号化します。319.236.526.14.228.331.410.145復号はこの逆の操作を行えばよいのですが、パスワードを変換した数が分からないので、総当りします。コードが負にならない範囲で行うことで、抑えることができます。総当りした結果、印字可能な文字のみで構成されている文字列を候補として出力します。main()これを実行すると、フラグが現れます。冒頭はこんな感じです。IKK7eI86G10I83G7I72G1I90V0I78V2I80G6I82G5I13G9I76G13ZKK6cKK65KK74GLZKK6cKK65KK74I65G13LZSS46ZKK66SS6fKK6eKK74VLZSS54ZSS6dSS61SS67KK73KK74SS65KK70V...よく見ると、2桁の16進数がかなり含まれていることがわかります。ような文字列が確認できたので、非16進数の部分を勘で適当な文字に置換したりすると、こんな感じになりました。...なんとなくそれっぽくなったので、コンパイルしてみようとしましたが、エラーが出てできませんでした。変換して、他は何も変換しないでコンパイルしてみると、うまくいきました。ファイルを開くと1つめのフラグが書いてありました。question!2つめはどこだろうと何がコンパイルされたのか確認すると、索引ファイルも出力されていました。その中に2つめのフラグがありました。今回はファイルに対して処理を行いましたが、与えられたファイルをそのままコンパイルすればよかったようです。最短手順回数を求める問題です。探索をすることにしました。上にスライドした後下にスライドして元に戻す、という無駄な操作を排除するために探索を行った状態は省くようにしました。main()ナイーブな方法のため、手順が多くなると遅くなってタイムアウトしてしまいます。こんな方法ですが、何回か試したら、フラグが出てきました。250)ウェブアプリケーションが問題です。