通过动态执行,常见的动态解密的swf都可以解决。 不过遇到很多条件判断、环境依赖的限制,往往又无法稳定dump出解密的swf文件和关键的数据(shellcode)。 恶意的SWF常常通过doswf加密和secure swf混淆,真正利用的部分被加密、混淆,通过研究doswf的加密方式以及secureswf的混淆方式,可以直接通过静态的方法进行相应的解密和反混淆,直接检测最核心的恶意代码部分 Crypt Flow 经过doswf加密的swf文件,都存在DefineBinaryData的tag,因为原始swf文件将会存放在这个二进制数据中,二进制数据经过解密后通过loadbytes进行加载。 上面的描述简化了一些不重要的因素,如doswf加密时还会嵌入两个额外的swf文件,所以当解密二进制数据后,会发现解密后的数据中包含三个swf,这时只要根据硬编码特征”FWS”、”CWS”就可以将所有包含的 swf文件完整dump出来。
import sys,os ##参数处理for windows,和操作系统交互 import re ##正则表达式处理工具 import struct ##二进制数据操作 def extract_swf length = struct.unpack_from('<L', buf, offset+4)[0] swfname = filename + '_offset_0x%x.swf offset open(swfname,'wb').write(buf[offset:offset + length]) print '[+] Find embeded swf pass def usage(): print 'Usage: extract_swf.py [file]' if __name__ == '__main__': print '\nextract_swf.py 1.0\n' if len(sys.argv) <> 2: usage() sys.exit(0)
loading条都很不错,最近又有需要用到loading条,怎奈它并不提供直接打包下载,只好自己写程序去抓取了… 访问:http://www.prettyloaded.com/ ,用httwatch可以分析出它的swf swf_url = "http://www.prettyloaded.com/swf/" + swf_name + "? + ' begin down...' 25: 26: load_swf_file(swf_url, swf_name) 27 = swfUrl 45: #swf_data = urllib.urlopen(swf_url).read() 46: #swf_file = file(save_path , 'wb') 47: #swf_file.write(swf_data) 48: #swf_file.close() 49:
前言 在iText 制作PDF这篇博文中只是简单的介绍了如何制作PDF,为了能让PDF在Web页面中显示,我还需要通过SWFTools工具将PDF文件转换为SWF文件,然后通过SWF文件显示在Web网页中 安装完成后会生成pdf2swf.exe。并预先在PDF文件夹添加一个文件。 ? ,此PDF文件也是由上节中生成的。 第三步 根据PDF文件夹,来查找或者生成相应的SWF文件夹 //获取SWF存放目录 private string GetSavePathFromName(string pdfFile 生成SWF文件。 到此简单的将PDF文件转换为SWF文件就成功了。 当然海域很重要的一步就是如何调用pdf2swf.exe文件,这里我是将此文件与winform的exe文件放在同一个目录下进行调用的。 ? 示例代码
当时的需求是点击网页装扮的时候会弹出一个层,层内有很多TAB选项卡,而有一个对图片处理的swf(让用户选择一张图片、编辑图片)放在其中一个选项卡中,而当来回切换tab选项卡的时候,swf会被重新加载。 后面在小组内我记得有总结过FF下什么情况下会触发swf的重新渲染: 1、将swf元素的display属性由none切换至block时; 2、将swf元素由页面内完全不可见的区域移动可见区域时(这一点现在需要再次证实一下 ); 当时的解决办法现在不大记得了,如果现在让我给一个方案,我会选择使用移动dom来处理这个问题:将swf从它的你层移动当前可见的tab层,当切换回去的时候再移回原来的位置。 但最近在将游戏接入新浪微博的微游戏的平台时,遇到了一个问题:就是点击游戏内(flash)一个按钮,调用页面中的js函数,这个时候会将swf隐藏(none掉了,因为swf不能设置它的wmode为transparent 后来我调试进去,蓦然发现此问题我以前遇到过,然后修整了一个,将swf的display属性设置由none <–> block改为visibility的 visible <-> hidden,这样测试现在暂时没有问题
在媒体库中无法直接上传swf文件,会报出 “抱歉,出于安全的考虑,不支持此文件类型” 的提醒,解决方法:在根目录文件中wp-includes文件夹下的functions.php中 搜索 unset( $t['swf'], $t['exe'] ); 将其修改为 unset($t['exe'] ); 保存后覆盖源文件,重新测试上传swf文件,发现已经可以正常上传,问题解决。 将媒体库中的swf文件地址填入下面代码中swf地址,其中区块以html方式编辑预览即可得到效果展示。 <embed type="application/x-shockwave-flash" width="宽" height="高" src="<em>swf</em>文件地址" quality="high"> </embed > 如果添加的swf文件想要允许全屏化,可以在<embed>标签中加入下面两个属性就可以全屏化。
https://blog.csdn.net/hotqin888/article/details/78690716 网络中都只是告诉我们怎么插入swf,可是2013版powerpoint插入swf •mp4格式用格式工厂转成swf文件。其他格式视频是不行的。 •插入swf文件 •点“视图”------“工具栏”-------“控件工具箱”,打开“控件工具箱”对话框。 •在弹出的对话框中进行设置:在Movie栏目后填写要播放的SWF文件路径和文件名,并要注意四点:一定要写文件后缀名;在EmbedMovie选项中选择true; •有swf的页面都要加代码: •Sub OnSlideShowPageChange () •ShockwaveFlash1.Playing = True •End Sub •Swf属性设置: •loop为false。 •如果你想让swf文件嵌入PPT中后,在PPT文件移动时,不再移动SWF的原文件,嵌入的SWF也能正常播放,则需要加入如下命令: •打开“属性窗口” •“Allow Script Access”选项的值输入
flashmingo是FireEye最新发布的一个用于自动分析SWF文件的框架。它可以自动对可疑的Flash文件进行分类,并进一步的指导分析过程。 目的 到目前为止,取证人员和恶意软件分析师仍必须对可疑的SWF文件进行处理。据悉,Adobe Flash将于2020年被弃用,弃用后系统将继续支持不再使用安全补丁更新的旧文件格式。 它读取SWF文件并创建表示其内容和结构的对象(SWFObject)。然后,FLASHMINGO运行一系列插件作用于SWFObject对象,并将其值返回到主程序。 代码示例: fm = Flashmingo()print fm.run_plugin('DangerousAPIs', swf=swf)print fm.run_plugin('SuspiciousNames ', swf=swf, names=['spooky']) 默认插件 FLASHMINGO还附带了其他一些非常实用的插件: binary_data dangerous_apis decompiler suspicious_constants
阅读更多 Flex开发中使用Ant编译.mxml成.swf后,在.swf里使用Session的解决方法 http://iamin.blogdriver.com/iamin/1176113.html Session的操作使用例子: http://localhost:8080/samples/explorer/misc/ServerSessionDemo.mxml 但是,使用mxmlc编译.mxml成.swf 后,在.swf里是没有办法使用Session的 解决办法:可以通过RemoteObject的通讯方式来进行Session的处理 http://livedocs.macromedia.com/flex/15 (String)flashgateway.Gateway.getHttpRequest().getSession(). getAttribute("attr1"); 这样,.mxml文件经过编译成.swf
,则 movieA.swf 可以检查和修改 movieB.swf 中的变量、对象、属性、方法等,而且 movieB.swf 也可以对 movieA.swf 执行同样的操作。 如果从不同的域提供两个 SWF 文件(例如 http://mysite.com/movieA.swf 和 http://othersite.com/movieB.swf),则在默认情况下,Flash Player 既不允许 movieA.swf 编写 movieB.swf 的脚本,也不允许 movieB.swf 编写 movieA.swf 的脚本。 通过调用 System.security.allowDomain("mysite.com"),movieB.swf 授予 movieA.swf 编写 movieB.swf 的脚本的权限。 在上一个示例中,movieA.swf 可以编写 movieB.swf 的脚本,但 movieB.swf 无法编写 movieA.swf 的脚本,这是因为 movieA.swf 未调用 System.security.allowDomain
public String download() { //初始化 this.initContext(); String apath = request.getSession().getServletContext().getRealPath(upload); File af = new File(apath); // 假设没有这个目录。就创建个目录 if (!af.exists()) { af.mkdirs(); }
,以至于很多的演示视频,甚至小游戏都是用swf文件来保存的。 当然,这些网站据称是能完美将swf转换成mp4等视频格式。 然而当你真正试的时候才会发现,或许有的swf文件能正确转换,然而对大多数swf文件进行转换的时候我们就会发现,转换后的文件可能只会保留音频信息,我们只能看到一片漆黑。 比如对于某一个swf文件,我对他进行元素的提取: $ swfextract contrast-movie.swf Objects in file contrast-movie.swf: [-i] 7 因此我们只要用 swfdec-gnome程序包中的Gnash SWF Viewer 打开swf文件,再进行录屏即可得到一个视频文件。
触发了toString方法, 对应的返回值传入了ExternalInterface.call函数, 导致XSS. 2、Evil Input 再回过头来看看输入端. flashmediaelement.swf Flash Player会丢弃URL里%后非16进制的字符, 所以a.swf? a%s=b对于Flash Player来说是给a赋值b, 但对于flashmediaelement.swf中的代码逻辑而言, 是给a%s赋值b, 这样就可以利用两者的不一致性绕过这一检测. 但对于第一层的检测, 目前没有更好的办法进行绕过, 只能查看flashmediaelement.swf是否会通过读取传入的URL中的内容, 给目标参数赋值, 如果可以的话, 那么我们就可以通过污染URL 三、构造POC http://127.0.0.1/wordpress/wp-includes/js/mediaelement/flashmediaelement.swf?
const FILE_PATH:String="main.swf"; const CLASS_NAME:String="MainSwf"; var loader:Loader; var request
在项目开发过程中,有时会需要用到调用第三方程序实现本系统的某一些功能,例如本文中需要使用到的swftools插件,那么如何在程序中使用这个插件,并且该插件是如何将PDF文件转化为SWF文件的呢 二.如何实现PDF文件转化为SWF文件
在项目如果需要将PDF文件转换为SWF文件,可以在项目中引入Swftools插件,该插件的主要功能:PDF到SWF转换器。 每页生成一帧。 Direct output to file.swf. If file.swf contains ‘13568621′ (file13568630.swf), then each page指定输出的swf文件名
-P , –password password 对实现本次操作的类和插件做了一个简单的介绍,接下来提供一个具体实现该功能的操作方法:
///
首先看官网教程: pdf2swf -s - Set a SWF encoder specific parameter Usage: . /pdf2swf -s [option][=value] input.pdf -o output.swf [switches] PDF device global parameters: fontdir resolution poly2bitmap Convert graphics to bitmaps bitmap Convert everything to bitmaps SWF Parameters: SWF layer options: jpegsubpixels=<pixels> resolution adjustment for jpeg images (same compression (also done if flashversion>=6) bboxvars store the bounding box of the SWF
近期学《流体力学泵与风机》,发现swf文件在OFFICE2016-PPT课件中不能正常播放,想不安装FlashPlayer插件便能够在线查看。 于是提取了PPT中的swf文件,使用swf2js库(https://github.com/ienaga/swf2js)解析为canvas绘图并播放。示意代码如下: <! "/> <meta name="viewport" content="width=device-width,user-scalable=no,initial-scale=1.0" /> <title>swf2js "></script> <script type="text/javascript"> swf2js.load('develop'); </script> </body> </html> 网络上找了一些swf文件,可以解析低版本swf文件,但这就够了。 ?
这样就生成了一个名为flower.swf文件,将其放在b.com域下,访问路径为:http://b.com/swf/flower.swf 新建一个名为main.fla文件,如果是在fla内加载flower.swf 本地加载文件,不需要设置LoaderContext的securityDomain属性,否则会报错): ldr = new Loader(); var url:String = 'http://b.com/swf 如果main.swf与flower.swf属于同一域则不需要设置ldrContext的securityDomain属性,而假设main.swf放在a.com下,而flower.swf放在b.com域下, 否则在访问加载的swf时,会报安全沙箱冲突,而main.swf在第一次加载flower.swf时,会先加载b.com根目录下的crossdomain.xml(http://b.com/crossdomain.xml 点击“加载swf”按钮后,最终的效果图: ?
第三方插件 通过自己为数不多的网站渗透的经验,发现了两种存在xss的flash插件在国内的网站中比较普遍,一个是zeroclipboard.swf,一个是swfupload.swf,下面分别介绍下: /flash/ZeroClipboard.swf /js/ZeroClipboard.swf /swf/ZeroClipboard.swf …… 2、swfupload.swf 顾名思义,web文件上传组件 下面给出poc代码 swfupload.swf? /swfupload/swfupload.swf /upload/swfupload.swf /images/swfupload.swf /static/swfupload.swf /common/swfupload.swf 通过对swf文件格式的研究,swf文件开头必为’cws’或者’fws’,这里的’cws’表示文件压缩,’fws’表示文件没有压缩。
在之前有做了一篇文章:java开发_模仿百度文库_OpenOffice2PDF_源码下载 今天做第二步:PDF(OpenOffice+JodConverter)=>SWF(pdf2swf) 做之前,我们也要先做一些准备 /pdf2swf/src/com/b510/pdf2swf/PDF2SWF.java 1 /** 2 * 3 */ 4 package com.b510.pdf2swf; 5 文件后缀名 32 */ 33 public static final String FILE_NAME_OF_SWF = "swf"; 34 35 /** 36 ("转化SWF文件成功!!!") /test_1352107155307.swf 7 转化SWF文件成功!!!