题目
function escape(s) {
  s = s.replace(/"/g, '\\"');
  return '<script>console.log("' + s + '");</script>';
}解题报告
由于所有 " 都被转义为 \" ,导致无法直接闭合函数。
但是不能直接闭合,不等于无法闭合。
因为只是转义了双引号 " ,没有转义反斜杠 \ ,那么我们只需要再输入一个反斜杠去吃掉转义双引号的反斜杠,那么双引号就得以保留,并用来闭合函数了。
于是可以构造 payload 如下 (此处没有闭合后半段的双引号,而是通过行注释 // 屏蔽掉):
\");alert(1);//
答案下载
- payload.js : 下载
 
                     
                     
                     
                        
                        