最近在開發社群版網頁遊戲,其實在整個開發過程中碰到了不少問題。而這些問題也被很細心的使用者們發現,並使用外掛程式鑽了空子。例如我在前面曾寫過的一篇部落格《web開發安全守則之永遠不要相信使用者的輸入》中介紹過,因為判斷使用者購買道具時,整個程式遺漏對負數的處理。今天藉著另外乙個外掛程式問題,講講網頁遊戲中的外掛程式。
網頁遊戲裡面的外掛程式和網路遊戲的外掛程式是截然不同的,需要技術也要簡單很多。一般常用方法是使用模擬http的資料提交,當然這個過程需要知道前台(一般flash)的請求介面以及該請求介面的功能;使用程式自動地按序呼叫這些介面。
例如:在農場遊戲中偷取好友的菜, 而這個操作需要訪問它需要傳遞引數a=b;c=d; 那麼下面這段php指令碼就能達到這麼乙個效果(注意一般程式都需要登入,這裡你需要處理傳遞那邊的session——id,具體可以使用下面提到的兩個工具獲得)
$rr_url = '';function curlcookie($url, $cookie, $post)
$cookie = '';//這個是記錄你登陸的session_id
如果你把整個遊戲的流程分析清楚了(要有耐心),那麼寫成一系列的這樣的請求指令碼,你就可以讓程式自動跑了。至於怎麼樣去觀察每個請求的詳細資訊,這個有兩個工具,使用firefox的話,一般就用firebug;在ie下面使用httpwatch。
上面是進行網頁網掛開發的基礎知識,要知道更多的東西,就需要了解http的協議了,不過有上面知識你就入門了;於是不使用手動玩遊戲,讓外掛程式幫你實現。而要獲取更大的好處,就需要尋找程式的漏洞,這可是是個需要耐心的活。舉個例子,該遊戲是一款足球遊戲, 你每天可以與別人打比賽,但是每天比賽場次有限制,一天最多能打30場。而你想免費多打幾場的話,就需要找漏洞:
1.最簡單的方式:從打比賽的介面下手,首先嘗試使用多併發的程式不停地訪問這個介面,我們遇到的問題就是在php的fastcgi進行處理的時候,由於是乙個人多個請求:
a:判斷剩餘場次
b:中間執行**
c:更新比賽場次
兩個請求出現了這麼一種情況, i請求在執行b, 這個時候ii請求執行了a,這樣他就可以多打比賽了,對於這樣的操作我們可以設定標誌變數;另外b的過程會很短,給利用的機會並不多。
php也有多執行緒的操作,下面是前面程式的多執行緒版本
function multicurlcookie($url, $cookie, $post)
{ $main = curl_multi_init();
for($i=0; $i0);
for($i=0; $i2。找更新比賽場次的地方。例如我們這款遊戲, 就是在某乙個地方更新比賽的場次的邏輯處理出了問題,而聰明的外掛程式者發現了這個問題,於是利用這個漏洞不斷打比賽,打完以後又不定地將比賽場次更新大最大值。
下面說說如何防禦這樣的外掛程式:
1. 對程式進行詳細地測試
2.對程式修改的時候,要考慮周全,絕大多數破壞行為是由於程式沒有考慮周全,同時我們也不得不佩服這些外掛程式者的細心
3.對一些敏感的資訊要做日誌,方便以後觀察
發現系統出了外掛程式,我們從那些地方找到入侵者的蛛絲馬跡:
1.php的錯誤日誌--檢查使用者是否有非法的輸入,造成php錯誤
2.nginx/apache的訪問日誌記錄,檢查使用者訪問程式的順序和具體的介面,看其中是否有可能存在的漏洞
3.自己的日誌記錄,一般的程式會對關鍵部分記錄日誌,以此觀察某些操作是否正常---這一項在程式設計的時候就需要考慮
4.資料庫裡面的資料,觀察使用者更新了那些與他相關的資料
5.資料庫語句的日誌記錄---例如mysql裡面的bin.log檔案
今天出現的這個問題 就是發現資料庫操作日誌檔案中大量更新比賽場次的操作,調整思路,找出原來在更新比賽場次時的乙個問題。也就是程式上的邏輯考慮不周全。
簡單地說了這麼多,其實核心就是程式設計的時候要考慮周全,留意使用者的不正常行為。我們沒有測試到的地方,外掛程式開發者們幫我找到了,於是盡快發現問題,解決問題。我這裡的並沒有提到其他方面的安全問題,例如伺服器和資料庫的操作許可權造成的管理許可權洩漏,php指令碼的攻擊。這些都是在程式一開始就必須做的基本安全防範。
網頁遊戲常見外掛程式原理及防禦
第一種 動作式 原理 模仿鍵盤滑鼠來操作ui 工具 按鍵精靈 防禦 增加人機互動 重點是玩家輸入,如登陸口常用的驗證碼機制 第二種 本地修改 1 修改flash lso本地共享物件 c documents and settings 你的windows 使用者名稱 一些隨機數字和字母 工具 sol e...
遊戲外掛程式分析
這個動態連線庫的作用很大,不要低估了哦,它可以切入所有的程序空間,也就是可以載入到所有的遊戲裡面哦,只要用對,你會發現很有用途的 這個需要你複習一下win32程式設計的基礎知識了,呵呵,趕快去看書吧 2截獲訊息 有些遊戲的響應機制比較簡單,是基於訊息的,或者用什麼定時器的東西,這個時候你就可以用攔截...
Redis CSRF漏洞分析及防範措施
redis csrf漏洞分析 近日有暴漏了redis的csrf漏洞,同時redis作者在最新發布的3.2.7也進行了修復,本文將對csrf攻擊及如何安全使用redis進行介紹。阿里云云資料庫redis版強制需要密碼訪問,不受該漏洞影響,而對於自建redis使用者可以根據後續的乙個建議措施進行修復。c...