xss绕过字符过滤_Xss小游戏通关秘籍

原创: Kale 合天智汇

原创投稿活动:

https://link.zhihu.com/?target=https%3A//mp.weixin.qq.com/s/Nw2VDyvCpPt_GG5YKTQuUQ

题记

最近发现一个xss的攻防网站,界面很有意思,很适合寓教于乐。于是玩了一下午,特此记录下来!xss姿势众多,所以每关也只是给了一部分示例!

知识前导

什么是XSS?

XSS 或者说跨站脚本是一种 Web 应用程序的漏洞,当来自用户的不可信数据被应用程序在没有验证以及反射回浏览器而没有进行编码或转义的情况下进行了处理,导致浏览器引擎执行了代码。

XSS防护逻辑

如果你可以使得一个Web应用程序满足以下规则,XSS可以被减少。

验证输入并且基于语境和按照正确的顺序转义不可信数据

输入验证

所有不可信数据应该针对Web应用程序的逻辑在处理和存储前进行验证

浏览器解析顺序

浏览器解码顺序

解码和解析顺序意味着很多东西。如果对不可信数据的编码或解码以错误的顺序或错误的环境,将再次有机会导致XSS漏洞的发生。编码或者转义对不同的环境要求不同。这些编码的顺序应该取决于应用程序的逻辑。

一个典型的不可信数据可以反射在HTML,HTML属性,脚本变量,脚本块,含状态传输的参数,URL、风格等中。不同的转义方法为了确保XSS的防护必须要在不同的环境 中实现。

正文

01

server code:

function render (input) { return '
' + input + '
' }

input code:

第一关,没啥说的,没有任何过滤,直接输出到了js里面。

02

server code:

function render (input) { return '' + input + '' }

input code:

这一关闭合textarea标签即可

03

server code:

function render (input) { return '' }

input code:

">

此关闭合双引号及及input标签即可!

04

server code:

function render (input) { const stripBracketsRe = /[()]/g input = input.replace(stripBracketsRe, '') return input }

input code:

这里过滤括号,可以使用反引号绕过,当然可以使用html实体编码绕过

05

server code:

function render (input) { const stripBracketsRe = /[()`]/g input = input.replace(stripBracketsRe, '') return input }

input code:

在上题基础上加了个``反引号过滤,html实体编码绕过

06

server code:

function render (input) { input = input.replace(/-->/g, '') return '' }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值