Hi Community,
hab vor ca. 1 Monat mal einen Bug gefixt, der es Angreifern ermöglicht hat einen Character im Account eines anderen zu erstellen.
Ich weiß das klingt zwar nicht so böse aber immerhin ist es ein Bug der andere Accounts beeinflussen kann und sollte daher gefixt werden.
Deshalb release ich hier ein kleines Snippet, welches diesen Bug behebt. :)
Ihr sucht erstmal folgendes: "CDbManager::CreatePlayer(" im DatabaseServer und kopiert folgenden Code unter den Code des "2nd Password Systems":
Ist wahrscheinlich nicht der schönste Code aber es funktioniert.^^
lg Ich;
hab vor ca. 1 Monat mal einen Bug gefixt, der es Angreifern ermöglicht hat einen Character im Account eines anderen zu erstellen.
Ich weiß das klingt zwar nicht so böse aber immerhin ist es ein Bug der andere Accounts beeinflussen kann und sollte daher gefixt werden.
Deshalb release ich hier ein kleines Snippet, welches diesen Bug behebt. :)
Ihr sucht erstmal folgendes: "CDbManager::CreatePlayer(" im DatabaseServer und kopiert folgenden Code unter den Code des "2nd Password Systems":
Als nächstes nurnoch ein #define __CHAR_CREATE_FIX in der VersionCommon des DB Servers und es sollte behoben sein. :)#ifdef __CHAR_CREATE_FIX
char szQuery0[QUERY_SIZE] = { 0,};
sprintf(szQuery0, "SELECT * FROM ACCOUNT_DBF.dbo.ACCOUNT_TBL WHERE account='%s' AND password='%s'", lpDbOverlappedPlus->AccountInfo.szAccount, lpDbOverlappedPlus->AccountInfo.szPassword);
if( FALSE == qry->Exec( szQuery0 ))
{
WriteLog( "%s, %d\r\n\t%s", __FILE__, __LINE__, szQuery0 );
FreeRequest( lpDbOverlappedPlus );
return;
}
if(!qry->Fetch())
{
FreeRequest( lpDbOverlappedPlus );
return;
}
#endif
Ist wahrscheinlich nicht der schönste Code aber es funktioniert.^^
lg Ich;