Register for your free account! | Forgot your password?

Go Back   elitepvpers > Metin2 > Metin2 PServer - Discussions / Questions > Metin2 PServer Guides & Strategies
You last visited: Today at 18:46

  • Please register to post and access all features, it's quick, easy and FREE!

 

[FIX]SQL-Injektionslücke im Inventarsperrsystem

Reply
 
Old   #1
 
elite*gold: 150
Join Date: Feb 2009
Posts: 535
Received Thanks: 488
[FIX]SQL-Injektionslücke im Inventarsperrsystem

Hallo Leute,

wie ihr vielleicht mitbekommen habt, hatten wir Probleme mit einem Hacker, der sich als "virus007" bei uns vorgestellt hat. Nach einigen Absprachen mit mir bekannten Hackern wurde klar, dass dieser "virus007", der uns gehackt hat, nicht der Echte war - Denn mit dem habe ich mich dann unterhalten.
Das witzige ist, dass der Fake-"Virus007" sich keine Daten gezogen oder sonst etwas gemacht hat und sich beim Query's schreiben gefühlte 400x vertippt hat. Sein Ziel war es anscheinend nicht unbedingt, uns zu schaden, sondern nur, uns zu nerven.

Wie dem auch sei, die Lücke ist in dem Inventory-Protect-System von Legend enthalten, wie sie funktioniert, lasse ich hier BEWUSST aus.

-------------------------------------------------------------

../game/src/inventory_protect.cpp

Suchen:

Code:
bool CHARACTER::SetInventoryPassword(const char * password)
Gesamte Funktion ersetzen mit:

Code:
bool CHARACTER::SetInventoryPassword(const char * password)
{
    char companionEscaped[CHARACTER_NAME_MAX_LEN * 2 + 1];
    DBManager::instance().EscapeString(companionEscaped, sizeof(companionEscaped), password, strlen(password));

	char szQuery[1024];
	snprintf(szQuery, sizeof(szQuery), "UPDATE account.account INNER JOIN player.player ON player.account_id=account.id SET inventory_password = '%s' WHERE player.name='%s'", companionEscaped, GetName());
	SQLMsg * msg = DBManager::instance().DirectQuery(szQuery);

	if (msg)
	{
		return true;
	}
	else
	{
		return false;
	}

	M2_DELETE(msg);
}
Ist im Grunde die selbe Art SQL-Injektionenslücken zu schließen wie zuvor bei der Messenger-Lücke. Hab nicht einmal den Variablennamen verändert lulz.

MfG
Cyber



Cyber36 is offline  
Thanks
5 Users
Old   #2
 
elite*gold: 0
Join Date: Feb 2016
Posts: 10
Received Thanks: 8
Code:
	if (msg)
	{
		return true;
	}
	else
	{
		return false;
	}

	M2_DELETE(msg);



mq1n4 is offline  
Thanks
5 Users
Old   #3
 
elite*gold: 10
Join Date: Jul 2013
Posts: 80
Received Thanks: 327
Code:
bool CHARACTER::SetInventoryPassword(const char * c_pszPassword)
{
	char szEscapeString[CHARACTER_NAME_MAX_LEN * 2 + 1];
	DBManager::instance().EscapeString(szEscapeString, sizeof(szEscapeString), c_pszPassword, strlen(c_pszPassword));

	std::auto_ptr<SQLMsg> pMsg(DBManager::instance().DirectQuery("UPDATE account.account INNER JOIN player.player ON player.account_id = account.id SET inventory_password = '%s' WHERE player.name = '%s'", szEscapeString, GetName()));
	return (pMsg->Get()->uiAffectedRows);
}
VegaS ♆ is offline  
Thanks
1 User
Old   #4

 
elite*gold: 1
Join Date: May 2014
Posts: 1,509
Received Thanks: 586
Hast du dich bereits beim Ersteller diesbezüglich gemeldet? Würde ja an deiner Stelle das Geld zurück ziehen. Wenn man schon für etwas zahlt soll es gefälligst auch funktionieren. Ich kauf im Laden ja auch kein Handy was möglicherweise normal funktioniert.


xSaito is offline  
Thanks
1 User
Old   #5
 
elite*gold: 150
Join Date: Feb 2009
Posts: 535
Received Thanks: 488
Quote:
Originally Posted by mq1n4 View Post
Code:
	if (msg)
	{
		return true;
	}
	else
	{
		return false;
	}

	M2_DELETE(msg);

Quote:
Originally Posted by VegaS ♆ View Post
Code:
bool CHARACTER::SetInventoryPassword(const char * c_pszPassword)
{
	char szEscapeString[CHARACTER_NAME_MAX_LEN * 2 + 1];
	DBManager::instance().EscapeString(szEscapeString, sizeof(szEscapeString), c_pszPassword, strlen(c_pszPassword));

	std::auto_ptr<SQLMsg> pMsg(DBManager::instance().DirectQuery("UPDATE account.account INNER JOIN player.player ON player.account_id = account.id SET inventory_password = '%s' WHERE player.name = '%s'", szEscapeString, GetName()));
	return (pMsg->Get()->uiAffectedRows);
}

Not. My. Code.

Quote:
Originally Posted by xSaito View Post
Hast du dich bereits beim Ersteller diesbezüglich gemeldet? Würde ja an deiner Stelle das Geld zurück ziehen. Wenn man schon für etwas zahlt soll es gefälligst auch funktionieren. Ich kauf im Laden ja auch kein Handy was möglicherweise normal funktioniert.
Wir sind in Metin2. Meinst du, jemand für dir nur einen Euro zurückzahlen?
Cyber36 is offline  
Old   #6

 
elite*gold: 1
Join Date: May 2014
Posts: 1,509
Received Thanks: 586
Quote:
Originally Posted by Cyber36 View Post
Wir sind in Metin2. Meinst du, jemand für dir nur einen Euro zurückzahlen?

Scheiß egal wo wir sind, wenn du dafür gezahlt hast, solls auch ordnungsgemäß funktionieren. Selbst bei einem Euro. Dann ist es halt ein SYMBOLISCHER Euro!
xSaito is offline  
Old   #7
 
elite*gold: 0
Join Date: Oct 2012
Posts: 110
Received Thanks: 1
Hello, please div for game 2138R. thank you
xworldx is offline  
Old   #8
 
elite*gold: 0
Join Date: May 2012
Posts: 210
Received Thanks: 197
Quote:
Originally Posted by xworldx View Post
Hello, please div for game 2138R. thank you
You are braindead.


LovecKrys is offline  
Thanks
6 Users
Reply



« Previous Thread | Next Thread »

Similar Threads
[04.09.13] GigaByte v2.6 [FIX, FIX, FIX, FIX AND FIX]
http://www.elitepvpers.com/forum/warrock-hacks-bots-cheats-exploits/2843300-11-09-gigabyte-public-v2-7-a.html
79 Replies - WarRock Hacks, Bots, Cheats & Exploits



All times are GMT +2. The time now is 18:46.


Powered by vBulletin®
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.

Support | Contact Us | FAQ | Advertising | Privacy Policy
Copyright ©2017 elitepvpers All Rights Reserved.