たこし++の備忘録

競技プログラミングの備忘録

SECCON Beginners CTF 2018 write up

CTFは前から興味があったけど、界隈に生息している人たちに対して怖そうなイメージを持ってたので コンテストに出たことなかったけど、初心者向けということでゆるふわチームを作って参加した。 やってみた感想としてはこれが初心者向けなのか...という気持ちになりました。 以下かろうじて解けた問題

Veni, vidi, vici

ファイルが3つ与えられて、それぞれのファイルによくわからない文字列が記載されていた。 最初何やればいいか全然わからなかったけど「Veni, vidi, vici」をGoogle先生に聞いてみたらカエサルという名前が 出てきて察した 3つめのファイルはシーザー暗号とは関係なく、画面を180度回転させると見えてくる

Greeting

名前をadminにするとflagが表示されるっぽいが、フォームにadminと打って送信すると サーバー側で偽管理者と書き換えられてしまう。 サーバー側の処理が書かれているコードを頑張って読むと、nameパラメータを指定していないときはクッキーから nameを設定するっぽい&&nameパラメータをそのままクッキーに書き込むっぽかったので 1回目はフォームにadminを入力して送信し、2回めにnameパラメータを付けずにpostするとフラグが表示された。

Gimme your code

いろいろと遊んでいると新規投稿の本文にjavascriptを埋め込むと投稿欄に埋め込んだものがそのまま実行できるっぽいことがわかるので、 フォームを送信する直前にvalueにuser-Agentを埋め込ませるようなjsを実行させる。

<script>
function alterValue() {
    document.getElementsByName('comment_content')[0].value = navigator.userAgent;
}
$(function () {
  document.getElementById('comment_form').firstElementChild.onsubmit=alterValue;
});
</script>

plain mail

pcapが与えられるので中身を見てみると、plainなmailが書かれていて 「zipファイルとパスワードを送るよ」というのを発見できる。 パケットをどんどん見ていくとzipファイルをbase64エンコードしたものと平文パスワードが 見つかるので、zipファイルを復元した後、パスワードを使ってそのzipファイルを解凍するとflagが出てくる

感想

いい勉強になった(粉みかん)。