[問題]大發現,我發現WOG一個BUG

BUG回報,BUG修改教學

版主: 涅魂, 簫哥

哇靠
 
文章: 4
註冊時間: 2004-11-12 12:08 am

[問題]大發現,我發現WOG一個BUG

文章哇靠 » 2004-11-12 12:16 am

報告
在下我發現一個WOG的BUG
這個BUG可以鎖定某個NPC的HP來滅少怪出現的範圍
但我不知要反應給誰.還是我可以直接打在這上面.麻煩告知一下@@



哇靠
 
文章: 4
註冊時間: 2004-11-12 12:08 am

文章哇靠 » 2004-11-12 10:51 am

沒人回那我就直接說了

WOG線上遊戲鎖怪BUG
在WOG內wog_fight.php內的fire($user_id)函數中
針對怪的出現是
$sql="select * from wog_monster where m_place=".$_POST["act"]." ORDER BY RAND() LIMIT 1 ";
這意思是在一個場地的怪亂數找一支
如果有心人改變$_POST["act"]的值就可以達到鎖怪
那如何可以改變這個值

在按了冒險開始之後.我們可以看到修練戰場的選擇內容是
<option value="13" >Fantasy</option>
我們可以把這個VALUE改成
<option value="13 And m_hp=怪的HP" >Fantasy</option>
這樣在按攻擊後
傳上去的$_POST[ACT]將原本的13變成了13 And m_hp=怪的HP
那進入SQL COMMAND去查只會得到這個M_HP的怪
攻擊完在將COOKET的SET_WOG內的資料清空(這是記錄你打怪的場地跟模式還有設定)
就可以達到鎖怪的目的了
改善的方法是
if($p=$DB_site->query_first($sql))//check act_timt benig
{
if($p[p_hp]==0)
{
alertWindowMsg("HP為0 請好好休息在來打吧..^_^");
}
if($p[p_key]!=0)
{
event_start($user_id,$p[p_key]);
}
if(rand(1,80)==1)
{
event_creat($user_id);
}

在這加上判斷$_POST["ACT"]是否為數字,或內容是否有空白或..一大堆自己想
$sql="select * from wog_monster where m_place=".$_POST["act"]." ORDER BY RAND() LIMIT 1 ";
$m=$DB_site->query_first($sql);
if($m)//m date check start



1340
 
文章: 36
註冊時間: 2004-01-31 8:47 pm

文章1340 » 2004-11-12 12:28 pm

your wog?



GYM
 
文章: 12
註冊時間: 2004-05-05 12:12 am
來自: YLL

文章GYM » 2004-11-13 12:46 am

這是他在研究無意中發現的,他本身沒架Wog……^^!

請ETERNAL大大務必看一下,這遊戲漏洞很嚴重,很多Wog似乎都可以鎖怪,包括水色。




ETERNAL
 
文章: 2937
註冊時間: 2003-12-03 11:08 pm
性別: 男生

文章ETERNAL » 2004-11-13 1:35 pm

GYM 寫:這是他在研究無意中發現的,他本身沒架Wog……^^!

請ETERNAL大大務必看一下,這遊戲漏洞很嚴重,很多Wog似乎都可以鎖怪,包括水色。


Temporary Internet Files內的檔案應該是無法修改
(只能複製出來,不能放進去)
照理來說玩家無法使用這個方法
除非是架設的人,自己改傳上自己的網站上

不過還是檢查一下比較好



GYM
 
文章: 12
註冊時間: 2004-05-05 12:12 am
來自: YLL

文章GYM » 2004-11-13 8:48 pm

ETERNAL 寫:Temporary Internet Files內的檔案應該是無法修改
(只能複製出來,不能放進去)
照理來說玩家無法使用這個方法
除非是架設的人,自己改傳上自己的網站上

不過還是檢查一下比較好

不過..他的程式連水色這裡的Wog也能鎖怪喔..(哇靠在上面的是[yll wog]的範例..

這跟Temporary Internet Files應該是沒有關係的..

Wog遊戲的程式碼應該都一樣吧..請ETERNAL大大趕快修正這漏洞吧^^!



哇靠
 
文章: 4
註冊時間: 2004-11-12 12:08 am

文章哇靠 » 2004-11-13 9:30 pm

嗯沒錯檔案是沒法更改,但資料可以,在IE本身這個BUG是不會有的,但利用外部的程式將IE包起來執行WOG就可以改了。這是SQL 指令天生的問題,原始程式只針對由USER端送上去的資料在特別字串符號有擋但對數字就沒有了。




ETERNAL
 
文章: 2937
註冊時間: 2003-12-03 11:08 pm
性別: 男生

文章ETERNAL » 2004-11-17 9:34 am

哇靠 寫:嗯沒錯檔案是沒法更改,但資料可以,在IE本身這個BUG是不會有的,但利用外部的程式將IE包起來執行WOG就可以改了。這是SQL 指令天生的問題,原始程式只針對由USER端送上去的資料在特別字串符號有擋但對數字就沒有了。



只要使用可以開啟socket的語言
自行寫一程式來連線,這個方法是可行的
以前有會員寫過這樣的bot來掛wog

防範方式很簡單
如上面"哇靠"會員所說


代碼: 選擇全部
      $sql="select * from wog_monster where m_place=".$_POST["act"]." ORDER BY RAND() LIMIT 1 ";


前面加入判斷是否有數字外,其他的符號
代碼: 選擇全部
if(eregi("[^0-9]",$_POST["act"]))
{
  alertWindowMsg("請選擇場地")
}



這樣就可以了



哇靠
 
文章: 4
註冊時間: 2004-11-12 12:08 am

文章哇靠 » 2004-11-18 1:30 am

感謝大大的回應
整理一下好了
在WOG目錄內wog_fight.php內的fire($user_id)函數中
找到
$sql="select * from wog_monster where m_place=".$_POST["act"]." ORDER BY RAND() LIMIT 1 ";
改成
if(eregi("[^0-9]",$_POST["act"]))
{
alertWindowMsg("請選擇場地")
}

$sql="select * from wog_monster where m_place=".$_POST["act"]." ORDER BY RAND() LIMIT 1 ";
就可以防止鎖怪了

在這說明一點
要完成鎖怪的動作不須用到SOCK埠那樣高深的學問
只要用VB或C++將IE包在裡面開啟WOG的遊戲
在用物件的觀念去做就好了
最後 謝謝ETERNAL跟GYM的熱心回應 祝順心




回到 臭蟲BUG區

誰在線上

正在瀏覽這個版面的使用者:沒有註冊會員 和 2 位訪客