1.跟前两关一样使用空格尝试隔开参数,结果失败

查看后端源码后才知道是对拼接进行了改写,提交的参数无法跳出src

2. 27个英文字母都不认的齐的我去翻译了下主界面的单词意思

说什么未定义不兼容,对于 .swf文件不熟悉的我去查了下这种格式是怎么回事

swf文件百度百科信息,反正就是看的不太明白

3.然后得知这玩意是可以反编译的,于是从网上下载了相关的反编译工具 JPEXS,从服务器找到 xsf03.swf这个文件,直接拖入反编译程序中。

然后在文件的脚本那里找到了出错的sIFR,点击打开后发现了我们页面显示的报错信息,是赋值给了 "VERSION_WARNING"这个变量,中文意思就是“版本警告”,难不成说什么不兼容是版本问题?

使用查找功能查找一下 VERSION_WARNING 变量在哪应用了,

这里先把VERSION.WARNING以%s打散成数组,然后再以version的方式组合成字符串。搜索了一圈,并没有version,哎,对flash太不熟悉了,只通过p-code发现了这样的一个东西

4.回到我们的level 19,url中同样是get了两个参数,并且拼接到了 src里面

在新标签页中打开,这url怎么有点眼熟,像是我们之前一直做的php传进参数

难不成swf文件也能传入参数?带着这个疑问我去百度了下,还真的可以

这一下就有思路了,前面的提示信息不是说什么未定义不兼容吗,然后逆向追踪到了输出信息version,难不成是version没有定义?那我们就给它定义一个version

xsf03.swf?version=1

提交后发现提示内容发生了改变,“undefined”变成了“1”,也就是我们定义的version

5.回到 level19提交也一样

那既然有回显信息,我们可以构造一个标签看能不能插进去

可以看到有了效果

点击后可以触发JavaScript命令

至于这种xss的具体原理我也不懂,感兴趣的同学可以自行去翻阅资料

标签: Flash XSS

仅有一条评论

  1. […] xss-labs level 19 […]

添加新评论