题目
function escape(s) {
s = JSON.stringify(s).replace(/<\/script/gi, '');
return '<script>console.log(' + s + ');</script>';
}
解题报告
Level 03 - JSON 的进阶版。
回顾下第 3 题的 payload 是 :
</script><script>alert(1);//
而这题对输入的字符串会做 一次 全局替换,把 </script
删掉,使得我们无法闭合标签。
但是因为替换只做一次,所以要绕过也不难,只需要把 </script
做一次嵌套即可,例如 </scr</scriptipt>
,被全局替换后,留下的就是我们需要的闭合标签 </script>
。
因此这题可构造这样的 payload :
</scr</scriptipt><script>alert(1);//
答案下载
- payload.js : 下载