WooYun DVWA-XSS #02-TwoVars

黑盒测试

两个输入框,分别输入1,2看看

image-20210815190321691

这是在拼接吗?

image-20210815190507591

闭合一下试试

image-20210815190911288

看到被实体编码了

image-20210815191009398

unicode编码绕过试试,将<进行编码

image-20210815191224673

&被过滤了

image-20210815191308611

无从下手

源码分析

提示也看不懂

image-20210815192429085

看看源码:进行了实体转义,没了

image-20210815192518599

百度

太邪门了,看源码也不知道怎么做,看看大佬的分析:

aaaa\和=1;alert(1);function/**/from(){}//,将这两个填入框中就可以弹框了

解释下为什么这样可以弹框吧。

var x="..."+"&ss=aaaa\"+"&from==1;alert(1);function/**/from(){}//"+"&param=";//后面省略。

首先,在&ss那里输入\会将后面的"进行转义,所以就变成了

var x="..."+"&ss=aaaa\"+"

然后后面的&就变成了位运算符了,而不是字符串了。

而当第二个框中输入=1时,会和from=形成一个from==1的比较结果的布尔值。

所以此时var x就结束了(所以后面加了一个;),那接着就执行alert(1)

但是from并没有定义,js的代码一句出错,后面的不会执行了

所以又通过function from (){}定义了一个空函数from。

中间的/**/是因为空格会被转义,用%0a也是一样的,%0d也行

最后由于多出来了&param=前后相关的字符串,所以在函数结束符后{}就加上//全都注释掉。

posted @ 2021-08-15 19:37  1ink  阅读(90)  评论(0编辑  收藏  举报