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 ...
随机推荐
- centos 安装 freeswitch,开启与关闭
---恢复内容开始--- 官网说明地址 :https://freeswitch.org/confluence/display/FREESWITCH/CentOS+7+and+RHEL+7 1.获取源码 ...
- Linux、命令ps 各字段意思
参数: -A :所有的进程均显示出来,与 -e 具有同样的效用: -a : 显示现行终端机下的所有进程,包括其他用户的进程: -u :以用户为主的进程状态 : x :通常与 a 这个参数一起使用,可列 ...
- 利用expect实现自动化操作
管理机上需要安装expect包 yum -y install expect 1.定义主机ip [root@localhost ~]# cat ip.txt 192.168.1.12 192.168.1 ...
- 汇编:jmp系列跳转指令总结
助记方法: J:跳转C: 进位位置位N: 否S: 符号位置位o: 溢出位置位Z: 零标志位置位E: 等于P:奇偶位置位A: AboveB: BelowL: Less (Little的比较级)G: Gr ...
- python_输出100:200内的素数
sushu=[] for i in range(100,201): for j in range(2,i): if i%j==0: break if i==j+1: sushu.append(i) p ...
- IBM MQ Explore使用
一,版本说明: 系统:win10.MQ:V9.04 二.关于帮助文档: 1.读了差不多一大半,个人感觉说明的比较生僻,应该是直译过来的.但是还是可以从这里面学一下基本的操作. 2.对于一些基本的操作, ...
- 更改yum网易、阿里云的yum源
更改yum源为网易的. 首先备份/etc/yum.repos.d/CentOS-Base.repomv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos ...
- VS Code 用户自定义代码片段(React)
VS Code 用户自定义代码片段(React) .jsxReact组件模板:javascriptreact.json { "Import React": { "pref ...
- win10如何修改host文件
首先找到host文件,一般位于:C:\Windows\System32\drivers\etc 之后用记事本打开,直接修改.保存txt文件到桌面. 最后删除后缀名,再粘贴回去就可以了.
- BZOJ2287: 【POJ Challenge】消失之物(背包dp)
题意 ftiasch 有 N 个物品, 体积分别是 W1, W2, ..., WN. 由于她的疏忽, 第 i 个物品丢失了. “要使用剩下的 N - 1 物品装满容积为 x 的背包,有几种方法呢?” ...