菜头粿

查看: 445|回复: 0
打印 上一主题 下一主题

关于swf文件的fscommand的安全隐患问题

[复制链接]
1#
跳转到指定楼层
发表于 2009-8-29 12:10:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式





关于swf文件的fscommand的安全隐患问题[原创]
我们知道,swf是flash动画的文件格式,在里面最刺激的,莫过于它的actionscript编程,在Flash5的时候。它的actionscript就已经很强大,其中它的fscommand的功能就不可小看,可以利用它与vbscript或javascript建立接口。使他它能够使用外部的脚本语言来控制flash,然而,它也有它的安全隐患,具体如下:(请大家不要以此做坏事!!!)

1、存储文件到硬盘

有时我们想要在用户的机子上留下cookie,或在用户的硬盘上存储一些其它类型的信息,唯一可行的方法就是借助FSCommand,它通过调用用户Windows系统的command.com命令打开MS-DOS窗口实现文件的存储。因为使用DOS命令行的方式生成文件,所以MS-DOS窗口是必然要出现的,但在高配置机子上,这个过程一闪而过,用户不易察觉。使得该命令生效的前提是,含有这个FSCommand语句的swf文件必须是在本机上运行,而不是通过网络来访问。

举例:将swf文件中文本输入框(变量名为:textbox)的内容存到一个新创建的和swf文件位于相同目录下的名为textfile.txt的文件中,并作为值赋给新的变量var。如下书写FSCommand语句:

打开Action面板选择Normal模式,在语句列表中选取FSCommand语句,转到面板下部:
在Command框中填写:exec(不要复选其后的Expression复选框)
在Arguments框中填写:"command.com"addchr(9)add"/c"addchr(9)add"echo"addchr(9)add"var="addtextboxadd">textfile.txt"(一定要将其后的Expression复选框打上钩!)
若在Expert模式下编写,则应写成:
fscommand("exec","command.com"addchr(9)add"/c"addchr(9)add"echo"addchr(9)add"var="addtextboxadd">textfile.txt");

说明:一个chr(9)表示一个空格;/c为command.com的参数,加上这个参数其后的命令才能被执行;>是重定向符,我们正是靠它将变量值写入textfile.txt中。另外,还可指定文件存放目录,如要在用户桌面上建立textfile.txt文件,那么将">textfile.txt"改为">c:\\windows\\desktop\\textfile.txt"
【注】:\\是转意字符。在Flash中,“\”被当成保留关键字,已失去了本来的意义,所以要想显示斜杠\,必须加前缀转意符\,使之是还原本来的意义,连在一起写就成了两个斜杠的形式。又比如,要想表示单引号,须写成\’这样的形式;实现回车的效果,须用转意符号\r。

2、删除硬盘上的文件

通过FSCommand->exec命令还可以删除硬盘上的文件,下面的语法只适用于Windows9X系统。

举例:将前面创建的textfile.txt删除

打开Action面板选择Normal模式,在语句列表中选取FSCommand语句,转到面板下部:
在Command框中填写:exec(不要复选其后的Expression复选框)
在Arguments框中填写:"command.com"addchr(9)add"/c"addchr(9)add"del"addchr(9)add"textfile.txt"(一定要将Expression复选框打上钩!)
若在Expert模式下编写,则应写成:
fscommand("exec","command.com"addchr(9)add"/c"addchr(9)add"del"addchr(9)add"textfile.txt");

警告:使用这个命令要慎重,因为是采用DOS命令删除文件,在回收站里是看不到的被删文件的。还有,万勿用来做坏事。

3、在硬盘上新建目录

通过执行FSCommand->exec生成的cookie若置于和所属swf文件位于同一目录下,容易被识别,用户在清理系统垃圾时极有可能将其清除,那样的话就失去意义了,考虑到用户一般不会轻易删除文件夹,我们专门新建一个目录存放cookie不失为一个好计。

举例:在swf文件所在目录下新建一个名为textfile的子目录

打开Action面板选择Normal模式,在语句列表中选取FSCommand语句,转到面板下部:
在Command框中填写:exec(不要复选其后的Expression复选框)
在Arguments框中填写:"command.com"addchr(9)add"/c"addchr(9)add"md"addchr(9)add"textfile"(一定要将Expression复选框打上钩!)

若在Expert模式下编写,则应写成:
fscommand("exec","command.com"addchr(9)add"/c"addchr(9)add"md"addchr(9)add"textfile"

说明:md是DOS命令集中用来建立目录的专用命令;如果换成rd则可以删除硬盘上已存在的目录,提醒诸位三思而后行。

4、由swf文件打开其它类型的文件

我们都知道,调用一个可执行程序(扩展名为.exe或.bat或.com)和打开一个一般文件是不同的,前者可自动运行,而后者需要相应的可执行程序支持打开,像扩展名为doc和pdf的文件必须由相应的可执行程序才能打开阅读。分三种情况考虑:
●开启一个外部可执行程序:扩展名.exe可以省略。具体来说,若一个exe文件(假设为another.exe)和该swf文件本身在同一个目录下,则直接键入程序文件名即可。如:
fscommand("exec","another")
否则,应写明路径。如打开IE浏览器窗口:
fscommand("exec","c:\\progra~1\\intern~1\\iexplore")
//注意DOS下对长文件(夹)名的处理形式。
下面两种情况也可以不写路径——
(1)当可执行程序是在c:\windows目录下时,可以不写路径。如调用windows的计算器,下面三种写法均可:
fscommand("exec","c:\\windows\\calc.exe")//*大家知道怎么格式化了吧。。。
fscommand("exec","c:\\windows\\calc")
fscommand("exec","calc")
(2)调用DOS命令也可省略路径。如下例打开MS-DOS下的Edit编辑器:
fscommand("exec","edit.com")
如果熟悉批处理文件写法,通过FSCommand->exec命令执行批处理文件可以一举多得。

●调用默认程序打开一般文件:这种情况不能省略扩展名,同样要注意文件路径。比如我们要打开和该swf文件本身在同一个目录下的名为fs.htm的文件,则命令写作:
fscommand("exec","start"addchr(9)add"fs.htm")
执行后,如果用户机子默认的浏览器是IE,则自动调用IE打开这个网页文件。

●指定程序打开一个一般文件:Windows并未规定一种类型的文件只能由一种程序打开(比如.txt文件既可以用记事本打开,也可以用写字板阅读),这就使我们可以任意选择可用于打开一般文件的可执行程序。当然前提是在大多数用户机子上都能够找到我们所指派的可执行程序,因此实际上能选取的是那些常用的、随windows9X预装的程序,像记事本(notepad)、写字板(write)、IE浏览器(iexplorer)、command命令等等。如我们希望调用客户机上的“写字板”程序,打开一个和该swf文件本身在同一个目录下的名为fs.txt的文本文件,可以这么写命令:
fscommand("exec","c:\\windows\\write.exe"addchr(9)add"fs.txt")

前已述及,凡是在c:\windows目录下的可执行程序,在书写FSCommand->exec命令时都可以省略路径,简写成:fscommand("exec","write"addchr(9)add"fs.txt")也是正确的


高级模式
B Color Image Link Quote Code Smilies

本版积分规则

手机版|Archiver| 菜头粿 声明:本站所发贴子内容仅代表网友观点,不代表本站立场,严禁一切与国家法律相抵触的内容。感谢关注!
粤icp备19073828

GMT+8, 2026-7-26 14:44 , Processed in 0.081826 second(s), 15 queries .

粤东.中国

© 2007-2026 czczcz.com

快速回复 返回顶部 返回列表