xss绕过

1. 利用html标签的属性值

利用场景:标签支持JavaScript:code伪协议
对应防御:过滤JavaScript关键字

<iframe src=javascript:alert(1)>
<a href=javascript:alert(1)> 文本</a>
" ><svg x="" Onclick=alert(1)>

注释:
#
<!-- -->
//

Ps(
这个特殊的协议类型声明了url的主体时任意的JavaScript代码,有JavaScript解释器运行

2. 利用空字符

常用字符:空格 回车 tab键
应用场景:对JavaScript关键字进行了过滤

3. 利用事件

事件:用户或浏览器自身执行的某种动作
利用方法 <onlick=“alert(1)”>

onclick触发
onclick是鼠标点击事件。我们可以像如下这样在元素中定义 JavaScript 事件:


这个 JavaScript 代码当有人点击它后就会被执行,同时还有其他事件如页面加载或移动鼠标都可以触发这些事件。绝大部分的时间都被过滤器所移除了,但是依旧还有少量事件没有被过滤,例如,onmouseenter 事件:
当用户鼠标移动到 div 上时就会触发我们的代码。
另一个绕过的办法就是在属性和= 之间插入一个空格:

4. 大小写混合 

5. 引号的使用

6. 利用伪协议

7. 编码:

html进制编码
JavaScript编码
url编码
base64编码

编码绕过
有的时候,服务器往往会对代码中的关键字(如alert)进行过滤,这个时候我们可以尝试将关键字进行编码后再插入,不过直接显示编码是不能被浏览器执行的,我们可以用另一个语句eval()来实现,eval()会将编码过的语句解码后再执行。
JavaScript是很灵活的语言,可以使用十六进制、Unicode、HTML等进行编码,以下属性可以被编码。(支持HTML, Octal, Decimal,Hexadecimal, and Unicode)
href=
action=
formaction=
location=
on*=
name=
background=
poster=
src=
code=
data= //只支持base64

8. 黑名单绕过

在真实环境中,’ 、" 、( 、) 都是属于黑名单中的成员,如果遇到以上四个字符被过滤的情况,那么我们就需要使用其他字符去代替,或者编码的方式去绕过。如:
1.不使用 " <input οnfοcus=alert(‘1’) autofocus/>
2.不使用 ’
3.不使用 ( )
4.不使用 ’ " ( ) <input οnfοcus=alert1 autofocus/>
5.使用html实体编码绕过
6.使用html实体编码绕过变形

过滤了JavaScript
Java_Script
用编码,tab,空格,双写,不用它用事件

语句:

<script>alert(1)</script>
' onclick='alert(1)
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值