Register for your free account! | Forgot your password?

Go Back   elitepvpers > MMORPGs > Conquer Online 2 > CO2 Private Server > CO2 PServer Guides & Releases
You last visited: Today at 23:45

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

Advertisement



[Release - Hack/Exploit] Login To Anyones accounts on Binary servers

Discussion on [Release - Hack/Exploit] Login To Anyones accounts on Binary servers within the CO2 PServer Guides & Releases forum part of the CO2 Private Server category.

Reply
 
Old 12/04/2012, 02:37   #61


 
CptSky's Avatar
 
elite*gold: 0
Join Date: Jan 2008
Posts: 1,443
Received Thanks: 1,175
Hum. Anybody remembering the japanese servers ? They're like ghost server, still at patch ~5065. This technique would work ?
CptSky is offline  
Old 12/04/2012, 22:55   #62
 
© Haydz's Avatar
 
elite*gold: 20
Join Date: Jan 2008
Posts: 1,042
Received Thanks: 252
Quote:
Originally Posted by CptSky View Post
Hum. Anybody remembering the japanese servers ? They're like ghost server, still at patch ~5065. This technique would work ?
They use the official account servers.
© Haydz is offline  
Old 12/05/2012, 11:32   #63
 
elite*gold: 20
Join Date: Aug 2007
Posts: 1,749
Received Thanks: 2,199
Quote:
Originally Posted by © Haydz View Post
They use the official account servers.
Code:
bool CUserList::LoginUser(LPCTSTR szAccount, LPCTSTR szPassword, SOCKET_ID idSocket)	// ½öÓÃÓÚ·ÇÕʺŷþÎñÆ÷Æô¶¯
{
#ifdef	ACCOUNT_ENABLE
	return false;
#endif
	bool	bRet = false;
	SQLBUF	szSQL;
	sprintf(szSQL, "SELECT id, name, account_id, recordmap_id FROM %s WHERE account='%s' && password='%s'", _TBL_USER, szAccount, szPassword);
	IRecordset*	pRes = GameWorld()->GetDatabase()->CreateNewRecordset(szSQL);		//VVVVVVVVVVVVVVVVVVVVVVVV
	if(pRes)
	{
		OBJID	idUser	= pRes->LoadDWord("id");
		NAMESTR	szName = "ÎÞ";
		pRes->LoadString(szName, "name", _MAX_NAMESIZE);
		OBJID	idAccount	= pRes->LoadDWord("account_id");
		OBJID	idMap	= pRes->LoadDWord("recordmap_id");
		PROCESS_ID	idProcess	= MapList()->GetMapProcessID(idMap);
		ASSERT (idProcess != PROCESS_NONE);
		int		nLevel	= 0;		// δÕʺŷþÎñÆ÷µÇ¼£¬²»ÐèÒªµÈ¼¶
		CreateUser(idProcess, idUser, szName, idAccount, idSocket, nLevel, szAccount);

		bRet = true;
		pRes->Release();;		//AAAAAAAAAAAAAAAAAAAAAAAAAA

		GameWorld()->SendFee(idAccount, CMsgFee_A::FEE_BEGIN);
	}

	{
		m_nPlayerAmount++;
		if(m_nMaxPlayerAmount < m_nPlayerAmount)
			m_nMaxPlayerAmount = m_nPlayerAmount;
		extern struct STAT_STRUCT	g_stat;
		InterlockedExchange(&g_stat.nAllPlayers, m_nPlayerAmount);
		InterlockedExchange(&g_stat.nMaxPlayers, m_nMaxPlayerAmount);
		InterlockedIncrement(&g_stat.nLoginPlayers);
	}
	return bRet;
}
Taken from UserList.cpp in the official Eudemons server source code. Doesn't seem to have a lot of protection against SQL injection
IAmHawtness is offline  
Old 12/05/2012, 12:28   #64
 
nTL3fTy's Avatar
 
elite*gold: 0
Join Date: Jun 2005
Posts: 692
Received Thanks: 353
Quote:
Originally Posted by IAmHawtness View Post
Taken from UserList.cpp in the official Eudemons server source code. Doesn't seem to have a lot of protection against SQL injection
That's not the code that's used for the login server. The source I have (whether it is official or not) does escape the username and password that is received from the client before querying the database.

Code:
void InsertBackslash(char * bufTarget, const char * pszSource)
{
	const char * pSour = pszSource;
	char * pTarg = bufTarget;
	while(*pSour)
	{
		if(*pSour == '\\' || *pSour == '\'')
			*(pTarg++) = '\\';

		*(pTarg++) = *(pSour++);
	}
	*pTarg = 0;
}
nTL3fTy is offline  
Old 12/05/2012, 12:36   #65
 
elite*gold: 20
Join Date: Aug 2007
Posts: 1,749
Received Thanks: 2,199
Quote:
Originally Posted by nTL3fTy View Post
That's not the code that's used for the login server. The source I have (whether it is official or not) does escape the username and password that is received from the client before querying the database.

Code:
void InsertBackslash(char * bufTarget, const char * pszSource)
{
	const char * pSour = pszSource;
	char * pTarg = bufTarget;
	while(*pSour)
	{
		if(*pSour == '\\' || *pSour == '\'')
			*(pTarg++) = '\\';

		*(pTarg++) = *(pSour++);
	}
	*pTarg = 0;
}
Oh, I just remember a case like a long time ago when people were logging other people's accounts, way before the whole incident with the "hack case forums" or whatever that got broken into. I just thought it had to do with the SQL injection into the username/password. Probably not then
IAmHawtness is offline  
Old 12/05/2012, 12:38   #66
 
© Haydz's Avatar
 
elite*gold: 20
Join Date: Jan 2008
Posts: 1,042
Received Thanks: 252
Quote:
Originally Posted by IAmHawtness View Post
Taken from UserList.cpp in the official Eudemons server source code. Doesn't seem to have a lot of protection against SQL injection
That's code from the server source code right?

I'm fairly sure that method is called after the account server has received and verified the information, before passing it over to the game server.

Taken from the account server source:
Where InsertBackslash replaces any bad SQL characters.

Code:
//////////////////////////////////////////////////////////////////////
// password == "" ±íʾ²»¼ì²éÃÜÂë
BOOL CAccount::Create(const char* pszName, const char* pszPassword)
{
	try{
		if(!pszName || _MAX_NAMESIZE <= strlen(pszName))
			return false;

		if(!pszPassword || _MAX_PSWSIZE <= strlen(pszPassword))
			return false;

		if (m_pRes != NULL)
		{
			::LogSave("WARNING: CAccount::Create() m_pRes not NULL.");
			this->Destroy();
		}

		char bufName[256];
		InsertBackslash(bufName, pszName); //
//		if(strchr(pszName, '\'') || strchr(pszName, '\\'))			// µ¥ÒýºÅ(')³£Á¿ºÍ·´Ð±¸Ü(\)³£Á¿
		{
//			::LogSave("ERROR: Login with illegal username [%s]. can't login.", pszName);	//¡ï DEBUG
//			return false;
		}

		char bufPassword[256];
		InsertBackslash(bufPassword, pszPassword);
//		if(strchr(pszPassword, '\'') || (strlen(pszPassword) && pszPassword[strlen(pszPassword)-1] == '\\'))	// µ¥ÒýºÅ(')³£Á¿ºÍ·´Ð±¸Ü(\)³£Á¿
//		if(strchr(pszPassword, '\'') || strchr(pszPassword, '\\'))	// µ¥ÒýºÅ(')³£Á¿ºÍ·´Ð±¸Ü(\)³£Á¿
		{
//			::LogSave("ERROR: Login with illegal password [%s]. can't login.", pszPassword);	//¡ï DEBUG
//			return false;
		}

		m_pRes = new CMyRecordset(&g_db);
		if(!m_pRes)
		{
			::LogSave("ERROR: CAccount::Create() can't new CMyRecordset object.");
			return false;
		}
		if(bufPassword[0])
			sprintf(m_szSQL, SQL_ACCOUNT_STMT, POINTTABLE, bufName, bufPassword);
		else
			sprintf(m_szSQL, SQL_ACCOUNT_STMT2, POINTTABLE, bufName);

		if (!m_pRes->Open(m_szSQL))  
		{	
			::LogSave("ERROR: CAccount::Create(char*) can't Open() database for [%s]", m_szSQL);
			delete m_pRes;
			m_pRes = NULL;
			return false;
		}

		if (m_pRes->RecordCount() == 0)  
		{	
			m_pRes->Close();
			delete m_pRes;
			m_pRes = NULL;
			return false;
		}

		if(!this->LoadInfo())
		{
			::LogSave("ERROR: CAccount::Create() can't LoadInfo()");
			return false;
		}

		return true;
	}
	catch(...)
	{
		::LogSave("exception catch at CAccount::Create(%s).", pszName);
		return false;
	}
}
Edit: whoops, didn't see the earlier post.
© Haydz is offline  
Old 12/05/2012, 12:39   #67
 
elite*gold: 20
Join Date: Aug 2007
Posts: 1,749
Received Thanks: 2,199
Quote:
Originally Posted by © Haydz View Post
That's code from the server source code right?

I'm fairly sure that method is called after the account server has received and verified the information, before passing it over to the game server.

Taken from the account server source:
Where InsertBackslash replaces any bad SQL characters.

Edit: whoops, didn't see the earlier post.
Haha yeah, my bad. I don't have the account server source
IAmHawtness is offline  
Old 12/05/2012, 12:42   #68
 
© Haydz's Avatar
 
elite*gold: 20
Join Date: Jan 2008
Posts: 1,042
Received Thanks: 252
Quote:
Originally Posted by IAmHawtness View Post
Haha yeah, my bad. I don't have the account server source
I'm not really sure if the one I have is official, nor can I remember where I got it, although it has the usual Tq characteristics.
© Haydz is offline  
Old 12/05/2012, 20:17   #69

 
Kiyono's Avatar
 
elite*gold: 20
Join Date: Jun 2006
Posts: 3,296
Received Thanks: 925
Well you probably got it from e*PvP. The source code for client and server were both floating around in the EO section.
Kiyono is offline  
Old 12/18/2012, 22:16   #70
 
elite*gold: 0
Join Date: Sep 2007
Posts: 442
Received Thanks: 21
any hint how to get a seed right?
ha.ho.a is offline  
Old 12/18/2012, 23:49   #71
 
elite*gold: 21
Join Date: Jul 2005
Posts: 9,193
Received Thanks: 5,380
Quote:
Originally Posted by ha.ho.a View Post
any hint how to get a seed right?
Start at 1 million and increment by 1.

Unless they've manually changed the numbering for their account ids then those should be the valid range.
pro4never is offline  
Old 12/19/2012, 01:13   #72
 
_DreadNought_'s Avatar
 
elite*gold: 28
Join Date: Jun 2010
Posts: 2,225
Received Thanks: 868
Quote:
Originally Posted by pro4never View Post
Start at 1 million and increment by 1.

Unless they've manually changed the numbering for their account ids then those should be the valid range.
FallenCO PM was 1 and they didnt manually change them
_DreadNought_ is offline  
Old 12/19/2012, 07:35   #73
 
elite*gold: 21
Join Date: Jul 2005
Posts: 9,193
Received Thanks: 5,380
Quote:
Originally Posted by _DreadNought_ View Post
FallenCO PM was 1 and they didnt manually change them

That means they used a weird database backup.

The client (and server) expect player uid's to be above 1 million. It's fairly well documented and while changing it to a non default range might 'help' versus this type of a tool... it's really quite a pointless measure and will likely screw up various gameplay elements.
pro4never is offline  
Old 12/19/2012, 11:41   #74
 
elite*gold: 0
Join Date: Sep 2007
Posts: 442
Received Thanks: 21
o well ive tried on a server with no success,,,
ha.ho.a is offline  
Old 12/19/2012, 20:22   #75
 
lostsolder05's Avatar
 
elite*gold: 20
Join Date: Jan 2006
Posts: 890
Received Thanks: 241
Quote:
Originally Posted by pro4never View Post
That means they used a weird database backup.

The client (and server) expect player uid's to be above 1 million. It's fairly well documented and while changing it to a non default range might 'help' versus this type of a tool... it's really quite a pointless measure and will likely screw up various gameplay elements.
In binaries certain commands will not work if your account UID is in that range.

e.x.: /player all & /player map
lostsolder05 is offline  
Reply

Tags
exploit, login


Similar Threads Similar Threads
[Release] How To Crash Binary Servers
10/17/2013 - CO2 Guides & Templates - 150 Replies
Introduction My name is Ulti as you all already know. My Mission: Messup binary servers.. Why? because there are too many and its not hard to run one, lets get some real talent back from people who can actually code and get the credit they deserve. What this program does? Thats easy it exploits various bugs on binary servers causing them to lagg and eventually crash. note: this is not a DDOS attack. Requirements
howto hack on binary private servers 5095 5065 protected/unprotected :)
09/17/2012 - CO2 Guides & Templates - 14 Replies
This small multihack should work on most 5095 and 5065 binary private servers. at the moment it only contains 2 hacks, speed & teleport, But More To come soon. also the hacks will work on protected clients... dumb ass protection system is all i can say lol. http://i54.tinypic.com/8x1o1x.jpg Enjoy
[Release] Newest Co's Gui for Binary's servers
04/02/2012 - CO2 PServer Guides & Releases - 3 Replies
Pic http://desmond.imageshack.us/Himg28/scaled.php?se rver=28&filename=5179575.jpg&res=medium the difference is that the blue buttons on the left side when i get them up they became useless DL in attachments



All times are GMT +1. The time now is 23:45.


Powered by vBulletin®
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2025 elitepvpers All Rights Reserved.