XSS绕过单引号限制

某视频网站,我在随处逛逛后发现了一个通过发送get请求来进行iframe连接的网页

有iframe。第一个想到的就是通过js伪代码来制造xss

所以我就简单写了一个alert

可以成功执行。没有过滤javascript:。那么我们尝试获取cookie。

也可以。并没有做过滤。那我们稍微修改一下。让cookie发到我的服务器不就可以盗取用户凭据了吗。

简单的写了个发送cookie的js代码

接收端代码

设置header 404就可以在执行完后返回404 NOT FOUND的报错。也许可以伪装一下恶意服务器。

 

直接贴入js代码。发现报错了。。

查看代码。发现转义了引号

虽然转义了引号。在javascript伪代码中。由于是在html里的。所以可以使用html实体编码来进行绕过啊。

将引号进行html实体编码

运行。还是报错。。。

查看源码。发现该网站遇到html实体编码就直接截断了

 

对比一下看得更直观

 

 

转义了引号。html实体编码也被截断了。。。那这还怎么玩呢。。。

 

不要慌。毕竟这个网站过滤还是不够充分。不能用引号。意味着不能使用字符串。但是没说不能使用数字啊。之前测试注入点的时候不就是用数字1来alert的吗

 

所以产生了一个大胆的想法:先将代码字符转成ascii码。然后再一个个用函数转回字符。最后使用eval函数将其执行。

首先确认一下eval是否被过滤了。

由此推断。eval大概率没有被过滤。

接着构建我们的payload。

js中字符转ascii码的函数为

charCodeAt()

 

将js代码按字符转成ascii码:由于很长。就写个js来跑吧

 

 

转成ascii码后。我们再将其转回字符。这样子在输入的时候就没有单引号。就不会受单引号转义的限制。

js ascii码转字符的函数:

String.fromCharCode()

 

由于太多ascii码了。就写个简单的js来帮我们拼接下字符串吧。。。

 

生成了。。好长一坨

 

丢进url。尝试XSS注入

 

发现一个报错

查看源码。发现+号变成了空格

这是因为在url中。+号被解析成空格了。要是想要用原本的+号就要用url编码即可。

重新将payload换成url编码。如下

就是将+号换成其对应的url编码 %2b。

 

丢入url中进行xss注入。成功获取cookie

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值