题目
function escape(s) {
s = JSON.stringify(s);
return '<script>console.log(' + s + ');</script>';
}
解题报告
从代码可知对输入做了 stringify 过滤,关于其功能详见 这里
简单来说就是把 " 和 \ 都转义了,导致无法直接闭合函数。
但是闭合 <script> 就可以了,构造 payload 如下 (此处没有闭合后半段的双引号,而是通过行注释 // 屏蔽掉):
</script><script>alert(1);//

答案下载
- payload.js : 下载