xss-labs靶场:level7攻略 双写绕过

经过第六关的简单修整我们来看第七关,第七关利用了一个很有趣且巧妙的技巧------双写绕过

我们尝试用最简单的payload来探探路:

<script>alert('xss')</script>

不出意外的,我们失败了

我们发现了一个有趣的现象

<form action="level7.php" method="GET">
<input name="keyword" value="<>alert('xss')</>">
<input type="submit" name="submit" value="搜索">
</form>

我们输入的语句中,script这个单词全都消失了!其实这也是程序的一种黑名单策略,会对黑名单中的关键词进行过滤和删除,难道我们就真的没办法了吗?不,我命由我不由天,我们要做的就是想尽一切办法欺骗程序

既然他会删除关键词script,那我们如果构造以下语句:

      "><scrscriptipt>alert(/xss/)</scscriptript><"

不知道大家有没有看懂这段语句的构造思路,现在来详细讲解一下:

我们原先构造了这段代码:<script>alert(/xss/)<script>

过滤后:<>alert(/xss/)</>

很显然程序识别到script并将它删除了
<scrscriptipt>alert(/xss/)</scscriptript> 是在script中又重新插入了一个script单词,这样程序识别到中间完整的script并将它删除后,我们就又得到了一个完整的script,即 <script>alert(/xss/)<script> 这便是双写的技巧

我们现在提交payload试一下

"><scrscriptipt>alert(/xss/)</scscriptript><" 

不出意外的,我们取得了成功!

拓展:我们同样可以利用伪协议和双写技巧构造payload:

"><a hrhrefef=javascscriptript:alert(/xss/)>ghkgkj</a><" 

同样可以获得成功

所以,xss靶场没有标准答案,我只能为你提供一两种有限思路,更多的需要去试错和思考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值