Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/419.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JS注入模板和正则表达式_Javascript_Html_Code Injection - Fatal编程技术网

Javascript JS注入模板和正则表达式

Javascript JS注入模板和正则表达式,javascript,html,code-injection,Javascript,Html,Code Injection,在它上面,我们建议下面的代码是可注入的。但是我不知道怎么做。在线回答说,将此\74a onclick=alert(1)\76W放入标有“Input”的文本区域(名称下方),然后单击W就是解决方案 页面上确实说我赢了,但我认为这是错误的 我发现它被正确地逃脱了,没有注射。页面上写的是什么?是真的注射了还是挑战页面错了 HTML: 文本 JS: //来自质询页面 函数转义(s){ 功能htmlEscape(s){ 返回s.替换(//g,功能(x){ 返回{'':'',&'':'&;','''

在它上面,我们建议下面的代码是可注入的。但是我不知道怎么做。在线回答说,将此
\74a onclick=alert(1)\76W
放入标有“Input”的文本区域(名称下方),然后单击W就是解决方案

页面上确实说我赢了,但我认为这是错误的

我发现它被正确地逃脱了,没有注射。页面上写的是什么?是真的注射了还是挑战页面错了

HTML:

文本
JS:

//来自质询页面
函数转义(s){
功能htmlEscape(s){
返回s.替换(//g,功能(x){
返回{'':'',&'':'&;','''':'',''':'';'}[x]| | x;
});
}
函数expandTemplate(模板,参数){
返回模板。替换(
/{(\w+)}/g,
函数(u,n){
返回htmlEscape(参数[n]);
});
}
返回扩展模板(
“\n\
你好!\n\
\n\
var v=document.getElementById('name');\n\
v、 innerHTML=“”;\n\
\n\
",
{name:s}
);
}
//解决方案
$('#c').html(转义('\74a onclick=alert(1)\76W');

您需要对反斜杠进行转义,以便
\74
\76
达到不变的转义功能。否则,它们会过早地转换为

$('#c').html(escape('\\74a onclick=alert(1)\\76W'));
演示:

//from challenge page
function escape(s) {
  function htmlEscape(s) {
    return s.replace(/./g, function(x) {
       return { '<': '&lt;', '>': '&gt;', '&': '&amp;', '"': '&quot;', "'": '&#39;' }[x] || x;       
     });
  }

  function expandTemplate(template, args) {
    return template.replace(
        /{(\w+)}/g, 
        function(_, n) { 
           return htmlEscape(args[n]);
         });
  }

  return expandTemplate(
    "                                                \n\
      <h2>Hello, <span id=name></span>!</h2>         \n\
      <script>                                       \n\
         var v = document.getElementById('name');    \n\
         v.innerHTML = '<a href=#>{name}</a>';       \n\
      <\/script>                                     \n\
    ",
    { name : s }
  );
}

//the solution 
$('#c').html(escape('\74a onclick=alert(1)\76W'));
$('#c').html(escape('\\74a onclick=alert(1)\\76W'));