當前位置:編程學習大全網 - 編程語言 - 大話2的BUG誰知道#55

大話2的BUG誰知道#55

大話西遊2:bug的使用細節

bug描述:在任何頻道輸入#()都會產生“搶話”的事情,註意那個#其實是小寫,2個括號也必須是小寫,括號內可以放部分字,不過沒有任何效果。

bug的例子:

A在世界頻道發送#()。頻道內顯示世界A

後面沒有內容,系統在等待下壹個說話者發言。

B隨後發言,內容為“妳好”。本來頻道顯示世界B妳好

但是實際顯示則把B妳好,這段發送在A的話後面。

實際上B的話就沒了,A前面說的話被改為世界AB妳好

最後A把B的話搶掉了。B別打我。

擴展情況:

1、如果A,B,C,D連續在世界上說話,A,B,C說的都是#(),D說的是妳好。會怎麽樣呢?會有壹個很搞笑的情況產生。就是A搶B的話,B搶C的話,C搶D的話。

最後世界上只有A的話,顯示如下:

世界ABCD妳好

很有趣對麽。如果足夠速度,這個鏈可以很長。要求是後面幾個人的話要幾乎同時說出,而且期間沒有人說正常話,而只說#(),直到有壹個人說正常話把這個鏈結束。

2、搶話的情況不僅是同壹個頻道,只要是妳所在的頻道都可能進行搶話。

比如妳開了當前、幫派、世界。那麽A在世界上打#(),而當前B隨後說了壹句:妳好。則世界上會顯示B的話,也就是說,把B本來想當前說的話變到了世界頻道裏面去了。

3、搶話還可以接話。

如果妳想搶話的同時,還想說壹些自己想說的話,把這些內容輸入在#()前面。妳就可以順利說出自己的話,並且用後面的#()搶下壹個人的話。

比如A世界說:妳好#()

B隨後說:我不好

那麽世界頻道最後的顯示為世界A妳好B我不好

更有趣了是麽,註意壹點,在#()後面是不可以加任何話的,就是說#()代碼會直接引用下壹句話顯示,而他 後面的內容會被忽略掉。

4、bug猜測

未經證實的部分和秀壹的部分猜測如下,

第壹,bug可能是客戶端頻道部分的代碼顯示結構中,壹個傳送結構,就是說系統自己調用#()來顯示各種話。所以很可能,不同的玩家頻道中看到的話可能是不同的。如果官方的代碼設計中,這個功能占頻道使用的主要結構,那麽這個bug很難改動,會影響頻道結構的內部代碼。

第二,bug可能還應用於服務器的通信傳送通道處理,那麽可能很多玩家看到的是同樣的頻道顯示,這種情況就更加復雜,如果想改掉這個bug,可能要對系統的頻道模塊內部代碼調整,或者加入過濾輸入代碼。

第三,因為#是大話通訊的壹個常規命令主語,後面的()很容易讓人猜測是壹種代碼內的變量標識,比如windows系統經常用%%來標識系統變量。在壹些常規的asp漏洞中,也是因為引用了近似代碼的語句才產生命令。比如很早以前的unicode漏洞編碼%c1%1c來引用“/”,用%0c%2f來引用“\”。

然後使用URL後面註入類似“/scripts/../c1%1c../winnt/system32/cmd.exe?/c+dir+c:\”這樣的字段入侵。可以顯示服務器C盤下的文件名,當然這是很老的壹種漏洞。不過原理應該是壹樣的。

還有很多bbs上面asp漏洞,用的代碼,可以把句段強行停止,並加入or等語句進行轉換判定。系統可能識別出帳戶的錯誤,但卻可能因為妳註入了比如or 1==1 這樣的話而讓妳通過進行入侵。

程序員設計這個()肯定是方便了客戶端的部分頻道處理代碼,可能用壹個簡單的()就可以處理各種頻道的顯示,也就可能引發了這個bug,這種產生和上述描述的漏洞類似,都是程序員的代碼設計安全性問題,黑客使用的眾多漏洞也出自與此。

該問題還不簡單是如此,可能還有很多還沒發現的內容,感謝那位朋友讓我動了壹次腦子,很久沒這些有趣的玩的了。呵呵。

  • 上一篇:請問:什麽兒童思維課比較好?
  • 下一篇:求有關街頭文化的電影~
  • copyright 2024編程學習大全網