alert(1) to win部分解题
XSS在线习题分析 (https://alf.nu/alert1)
1. Warmup
function escape(s) { return '<script>console.log("'+s+'");</script>'; }
没有进行过滤,只需要语句闭合就行。闭合语句思路:把console.log() 单独作为一个语句,alert(1)单独作为一个语句,包含在里面。
最好就是这个样子。
<script>console.log();alert(1);</script>
当我们输入");alert(1);//或者");alert(1);(",JavaScript语句就变成了
<script>console.log("");alert(1);("");</script>
或者
<script>console.log("");alert(1);//");</script>
第一条和第二条区别是,第一条完全的闭合了:(""),只要语法没错就可以。第二条//将后边的注释掉了,不用闭合,没有后边的</script>与<script>与之匹配,JavaScript照样可以正常输出。
2.Adobe
function escape(s) {
s = s.replace(/"/g, '\\"');
return '<script>console.log("' + s + '");</script>';
}
这个啥意思呢,就是函数replace把双引号换成了反斜杠+双引号:" -> \"。我们按照第一关的构造:<script>console.log("\");alert(1);//");</script>
可以看到在log()输出的那里,第二个双引号被\转移了,没办法有前边的双引号闭合。我们要想办法让\双引号失去作用:
");alert(1);//
在最前边加上一个反斜杠,replace函数自动添加的那个反斜杠和自己添加的那个反斜杠正好组一起了,log可以正常输出,两个双引号成功的闭合了。
<script>console.log("\\");alert(1);//");</script>
3.JSON
先把第二关的输入进去,发现log("\"),三个反斜杠,去掉输入的第一个反斜杠,发现输出变成了log("")。上网查了查,JSON.stringify()处理双引号和反斜杠 的时候,会在前边加上个反斜杠,这就说明第二关的思路不行了。因为这里输入无论有多少个反斜杠,输出反斜杠都是奇数 个,log()这里永远闭合不了。
我们只好转变思路,一开始是让这几句话在一个<script></script>里面,能不能让它们在两个里面呢?
别的不管,我把别的语句先闭合,里面是什么样子有没有错误我不管。我就让alert(1)这个包含在一个里面并且没有错误就行。
构造</script><script>alert(1)</script>// 其实到这里,我本来没有想到会成功的, 可能是因为优先级的原因,双引号没有匹配但是遇到script标签,也会优先执行后者。
结果:<script>console.log("</script><script>alert(1)</script>//");</script>
以后的等学了js再说吧,看代码云里雾里的。。。
alert(1) to win部分解题的更多相关文章
- 【alert(1) to win】不完全攻略
alert(1) to win 一个练习XSS的平台,地址:https://alf.nu/alert1 Warmup 给出了一段JavaScript代码 function escape(s) { re ...
- alert(1) to win Part Ⅰ
alert(1) to win Adobe: function escape(s) { s = s.replace(/"/g, '\\"'); return '<script ...
- 【20171027中】alert(1) to win 第13,14,15,16题
第13题 题目: function escape(s) { var tag = document.createElement('iframe'); // For this one, you get t ...
- 【20171027早】alert(1) to win 第9,10,11,12题
人在江湖,不服就干! 第9题: function escape(s) { function htmlEscape(s) { return s.replace(/./g, function(x) { r ...
- 【20171026早】alert(1) to win - 第六、七、八题
早上7点起床,又写了一篇小说发在了起点网上,有兴趣的可以看看.点击这里 忙完后,继续练习,刚开始发现自己答题的速度有些慢,可能是因为对于html,javascript知识不是很精通,但是话又说回来,谁 ...
- 【20171025晚】alert(1) to win 第五题 正则表达式过滤
吃过晚饭,再练一题 第五题 function escape(s) { var text = s.replace(/</g, '<').replace(/"/g, '"' ...
- 【20171025中】alert(1) to win 脚本渲染自建
游戏误人生,一下午玩了将近四个小时的三国杀,后悔不已,然后重新拾起xss challenge,突发奇想,自己构建渲染后的html. 从最简单的开始. 自动检测html: <!DOCTYPE ht ...
- 【20171025早】alert(1) to win 练习
本人黑绝楼,自称老黑,男,25岁,曾经在BAT工作过两年,但是一直都是底层人员,整天做重复性工作,甚敢无趣,曾和工作十年之久的同事聊天,发现对方回首过往,生活是寡淡如水,只有机械性工作.旋即老黑毅然决 ...
- "alert(1) to win" writeup
地址:http://escape.alf.nu/ level 0: 注意补全,");alert(1)// level 1: 通过添加反斜线使用来转义的反斜线变为字符,\");ale ...
随机推荐
- thinkphp分页+条件查询
最近项目上面有一个带条件查询的分页列表,一开始form用的post,点击第二页就没有跳转成功,原因是分页是get请求,post数据链接到其他页面就会被清除. 解决办法: 1.form表单method= ...
- C# asp.net mvc 注解验证
看代码,看注解,看懂了单词,没看懂意思. 今日只能专攻一下这项特性. 1.Remote 在看这个例子的时候 ,看了JsonResult 以及 JsonRequestBehavior.AllowGet解 ...
- IOS 响应者链条 and UIGestureRecognizer 手势识别器)
一次完整的触摸事件的传递响应的过程 UIAppliction --> UIWiondw -->递归找到最适合处理事件的控件 控件调用touches方法-->判断是否实现touches ...
- Aizu 2170 Marked Ancestor(并查集变形)
寻找根节点很容易让人联想到DisjointSet,但是DisjointSet只有合并操作, 所以询问离线倒着考虑,标记会一个一个消除,这时候就变成合并了. 因为询问和查询的时间以及标记生效的时间有关, ...
- hdu-3549 Flow Problem---最大流模板题(dinic算法模板)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=3549 题目大意: 给有向图,求1-n的最大流 解题思路: 直接套模板,注意有重边 传送门:网络流入门 ...
- 【洛谷3796】【模板】AC自动机(加强版)
点此看题面 大致题意: 一道模板题,给你\(N\)个模式串和一个文本串,要你求出在文本串中出现次数最多的若干个模式串并输出它们. \(AC\)自动机 都说了是\(AC\)自动机的模板题,做法肯定是\( ...
- 如何在Mac上创建.txt文件
cd ~/Desktoptouch test.txt cd 需要创建的文件夹目录vi 需要创建文件的文件名.txt
- java基础编程——链表反转
题目描述 输入一个链表,按链表值从尾到头的顺序返回一个ArrayList. 题目代码 /** * @program: JavaCode * @description:输入一个链表,按链表值从尾到头 ...
- 03_14_final关键字
03_14_final关键字 1. Final关键字 final的变量的值不能够被改变 final的成员变量 final的局部变量(形参) final的方法不能够被重写 final的类不能够被继承
- Java基础面试操作题: 获取 1-20 之间的随机数,共计 20 个,要求不能重复 获取 1-20 之间的随机数,共计 10 个,要求不能重
package com.swift; import java.util.HashSet; import java.util.Random; import java.util.Set; public c ...