第八关,HTML实体编码绕过
查看level8.php

在上一关的基础上,加了对双引号的替换。所以常规方法基本都失效了,因为无法使用引号闭合属性。
使用简单payload探测
payload:<script>alert()</script>

可以看到,构造的payload被放到了超链接标签的href属性中。
浏览器在解析HTML时,会先进行HTML实体解码,再根据上下文执行。
所以如果在使用超链接标签的href属性跳转链接时,会先进行HTML实体解码。
利用这一原理,我们可以用JS伪协议构造payload:
javascript:alert(),并对其进行十进制或者十六进制实体编码,但是不要使用URL,
注意,在HTML实体编码中,十进制格式为:&# + ASCII码 + ; ,比如r
十六进制格式为:&#x + ASCII码 + ; ,比如r
这里举例子是r
由于过滤的是script关键字,所以我们把script其中的任意一个字母实体编码即可,当然也可以全部实体编码
我这里是只转r
javascript:alert()

记得点击超链接。
