《一起来玩一些BAT的XSS实例》做题笔记

一篇很早在先知发的一篇xss挑战,之前只做了前几题,最近js的书刚看完了,便把以前收藏的一些xss的题目拿来做做。

xsstest1

查看源码如下

由setTimeout的用法:setTimeout(function, milliseconds, param1, param2, …)
可以发现闭合前面的函数aa,再传入一个alert函数即可

xsstest2

查看源码

看到div标签内有实体化编码后的xss语句,看到后面的js中,aa函数执行了$(“#xx”)x;

在jQuery中$(“#xx”)类似于dom中的getElementById,在jQuery中有text函数,会将html编码后的数据还原

因此一种做法是将aa函数内的x,y分别传入html与text,其中window.location.search.substring(1);获取?后的参数,再有split分割分别传入x,y参数

xsstest3

查看源码

传参px

刚开始看到以为做法是利用传参闭合,但是上下都要闭合,不然会一直出现报错,但是后面盲测用+号的时候,发现进行连接直接弹窗了

但是的确没明白什么原因,跑去问一朋友告诉我用了运算符的原因,把符号换成了一些运算符,例如*,-号等发现的确也弹窗了

想着应该是在进行计算时,先要确定每一项的值,确定第二项alert的时候使alert函数执行

xsstest4

第四题和第三题只是多了一些过滤,一些基本的运算符不能使用了,但是翻资料发现了其他没有过滤的运算符

利用instanceof即可

后面看到作者题解的时候才发现是非预期,作者没有过滤全部的运算符才能这么解,这里作者发的解法是利用模板字符串

在js当中中单引号和双引号不能直接去换行,直接换行会导致报错

但是模板字符串是可以包括换行,即将字符串包裹在``中

回到题目中,在px传入`,成功将上下闭合

再闭合后面的语句使语法正确即可

xsstest5

打开页面如下

有个callback参数,传入的值会输出到页面,抓包发现页面response是text/javascript,所以利用callback直接弹窗肯定是不行了,想办法引入这个链接,去掉user.php后可以看到页面的源码

看到源码后发现传参就可以了,script src已经给你写好了
uin=/test/xsstest5/user.php&pn=callback=alert(1)

xsstest7

与前面的的题目一样。传入px参数

进行闭合的时候发现单引号被转义了

有趣的是没对\进行转义,直接让’逃逸出来了,但是后面的单引号无法闭合

但是可以看到px参数同时上下输出了,再次利用模板字符串

但是模板字符串的上下输出内容不在一个script标签内,想要闭合显然是不存在的,去看了一下作者的题解,提到了 <!–进行闭合 带到题目中看一下 这里script标签被转义了,在后面加一个空格即可 可以很清楚的看到第一个和传入的标签进行了闭合,再次利用模板字符串 可以看到传入的aaa逃逸了出来,并闭合了单引号 文章地址:https://xz.aliyun.com/t/7909

发表评论

电子邮件地址不会被公开。 必填项已用*标注