xss-labs靶场-第二十关 FLASH XSS -续 – 作者:知非知非知非

26次阅读
没有评论

http://localhost/xss-labs/level20.php?arg01=a&arg02=b

xss-labs靶场-第二十关 FLASH XSS -续 - 作者:知非知非知非

又是空白页,难道SWF没有刷出来吗?

查看源代码,走起!!!

xss-labs靶场-第二十关 FLASH XSS -续 - 作者:知非知非知非

又是一模一样的源代码!!!

看大佬的WP,又是源代码审计!!!

http://localhost/xss-labs/xsf04.swf

xss-labs靶场-第二十关 FLASH XSS -续 - 作者:知非知非知非

这一关是ExternalInterface.call。

首先通过LoaderInfo从URL中取值

xss-labs靶场-第二十关 FLASH XSS -续 - 作者:知非知非知非

除了上面的id以外还要取两个值width和height。

xss-labs靶场-第二十关 FLASH XSS -续 - 作者:知非知非知非

接下来构造payload就可以了,arg01=id&arg02=xss\”))}catch(e){alert(/xss/)}//%26width=123%26height=123

首先arg01=id这个就不用解释了,arg02=xss\”))}catch(e){alert(/xss/)}//这个地方有不少要说明的,首先为什么要加”,来看看不加的结果

xss-labs靶场-第二十关 FLASH XSS -续 - 作者:知非知非知非

所以要加一个”进行闭合,让id不等于xss))}catch(e){alert(/xss/)}//,因为等下会直接将id的值全部都传到flash中,flash中仍然也有需闭合的部分,再来看看有\”的结果

xss-labs靶场-第二十关 FLASH XSS -续 - 作者:知非知非知非

你会发现好像没有什么变化,这因为php做了htmlspecialchar()过滤,至于为什么这样写,那就得看flash的代码了,等会id就会传到下面来

xss-labs靶场-第二十关 FLASH XSS -续 - 作者:知非知非知非

后面的可以不用管,因为会被我后面的//给注释掉,这里注意,由于是通过LoaderInfo取值的,所以就会变成这个样子

{ “id” = “xss\”))}catch(e){alert(/xss/)}//” }

可以看到,如果不加\转义id就会变成xss,也就是下面的这个样子,当id再传到里面的函数里面时就起不到报错的作用了。

{ “id” = “xss”))}catch(e){alert(/xss/)}//” }

接下来有许多函数都使用了id,ExternalInterface.call(a,b)相当于JS中的函数名(代码)

xss-labs靶场-第二十关 FLASH XSS -续 - 作者:知非知非知非

我们可以看到上面函数名已经固定了,要是没固定直接改成alert美滋滋,所以我们就从id这里着手,把id的值代进去。

ExternalInterface.call(“xxxx”,”xss\”))}catch(e){alert(/xss/)}//”),这样不太容易看的话,换种方式

private function clickHandler(param1:Event) : void

{

System.setClipboard(clipText);

ExternalInterface.call(“ZeroClipboard.dispatch”,”xss\”))}catch(e){alert(/xss/)}//”,”complete”,clipText);

}

把多余的去掉就会变成这样

private function clickHandler(param1:Event) : void

{

ExternalInterface.call(“ZeroClipboard.dispatch”,”xss\”))}catch(e){

alert(/xss/)

}

//”,”complete”,clipText);

}

然后你就会发现这样一搞,由于前面少了一个真正可以闭合的”于是会报错,所以后面抛出异常的catch就可以生效了,于是执行后面的alert(/xss/)。

再来说下//后面的%26width=123&26height=123,%26其实是&,那为啥非得写%26呢,先来看一个&的。

xss-labs靶场-第二十关 FLASH XSS -续 - 作者:知非知非知非

你会发现啥都没有,因为php就拿前两个参数,再看%26

xss-labs靶场-第二十关 FLASH XSS -续 - 作者:知非知非知非

xss-labs靶场-第二十关 FLASH XSS -续 - 作者:知非知非知非

可以了,访问这个地址就搞定了,不得不说我觉得我能耐心把这两题做完,感觉这一年学习真的有进步,哈哈。

xss-labs靶场-第二十关 FLASH XSS -续 - 作者:知非知非知非

PAYLOAD:arg01=id&arg02=xss\”))}catch(e){alert(/xss/)}//%26width=123%26height=123

http://localhost/xss-labs/level20.php?arg01=id&arg02=xss\”))}catch(e){alert(1)}//%26width=123%26height=123

并没有弹出,这题是通过报错进行弹出!!!

还有一种偷鸡的方法:

直接前台改!!!

PAYLOAD:onmouseover=alert(1)

onmouseover=alert(1)

onmouseover=alert(documnet.cookie)

xss-labs靶场-第二十关 FLASH XSS -续 - 作者:知非知非知非

xss-labs靶场-第二十关 FLASH XSS -续 - 作者:知非知非知非

来源:freebuf.com 2021-07-30 08:02:42 by: 知非知非知非

正文完
 0
评论(没有评论)