这是一些易受攻击的 JavaScript 代码:
$(document).ready(function(){
var payload = unescape(document.location.hash.substr(1));
$(payload);
document.body.innerText = "The payload is: " + payload;
});
当我尝试用这个输入来利用它时
http://localhost/xss.html#<img src=x onerror=alert(0)>
它工作正常,弹出警报。我的情况略有不同,有一个小过滤器可以防止利用:
$(document).ready(function(){
var payload = unescape(document.location.hash.substr(1));
payload = payload.split('=')[0]; // <------- The new filter
$(payload);
document.body.innerText = "The payload is: " + payload;
});
它会截断“=”字符之后的所有内容,这意味着我无法注入属性。我已经尝试了以下方法,但没有奏效:
- HTML 对等号字符 (
onerror&equal;alert())进行编码 <script>alert(0);</script>
任何人都知道我可以做些什么来绕过这个过滤器?