WooYun DVWA-XSS #02-TwoVars
黑盒测试
两个输入框,分别输入1,2看看
这是在拼接吗?
闭合一下试试
看到被实体编码了
unicode编码绕过试试,将<
进行编码
&
被过滤了
无从下手
源码分析
提示也看不懂
看看源码:进行了实体转义,没了
百度
太邪门了,看源码也不知道怎么做,看看大佬的分析:
aaaa\和=1;alert(1);function/**/from(){}//
,将这两个填入框中就可以弹框了解释下为什么这样可以弹框吧。
var x="..."+"&ss=aaaa\"+"&from==1;alert(1);function/**/from(){}//"+"¶m=";//后面省略。
首先,在
&ss
那里输入\
会将后面的"
进行转义,所以就变成了
var x="..."+"&ss=aaaa\"+"
然后后面的
&
就变成了位运算符了,而不是字符串了。而当第二个框中输入
=1
时,会和from=
形成一个from==1
的比较结果的布尔值。所以此时
var x
就结束了(所以后面加了一个;
),那接着就执行alert(1)
,但是from并没有定义,js的代码一句出错,后面的不会执行了
所以又通过
function from (){}
定义了一个空函数from。中间的
/**/
是因为空格会被转义,用%0a
也是一样的,%0d也行
。最后由于多出来了
¶m=
前后相关的字符串,所以在函数结束符后{}就加上//全都注释掉。