[FIX][C++] SQL Injection in Messenger and Guild

03/09/2016 09:16 vbacoder#76
Ich bräuchte dif für 41K Revision :/ wäre mega wenn jemand eine hätte :0
03/14/2016 19:32 Walion#77
35k diff fix giebs es hier ?
04/10/2016 02:46 9TAILS#78
Fixx für die 404 revision :

PHP Code:
This difference file has been created by IDA Pro

game
0018C7C8
01 00 


PHP Code:
This difference file has been created by IDA Pro

db
00076598
01 00 
AsyncSQL connect funktion auf 0 also player DB wird nicht gelöscht x)
04/12/2016 18:20 Chaosnightx3#79
Quote:
Originally Posted by saver345 View Post
Fixx für die 404 revision :

PHP Code:
This difference file has been created by IDA Pro

game
0018C7C8
01 00 


PHP Code:
This difference file has been created by IDA Pro

db
00076598
01 00 
AsyncSQL connect funktion auf 0 also player DB wird nicht gelöscht x)
Gibt wohl doch noch welche, die nicht mit dem Source arbeiten.
Gute Arbeit.
04/16/2016 00:09 °Light°#80
Good fix. Thanks
04/18/2016 08:55 -Exploit#81
Quote:
Originally Posted by MartPwnS ^ View Post
Some updates from the WoM2 side:
So hier mal ein paar Neuigkeiten von WoM2:

[For developers mostly | Hauptsächlich für Entwickler]

A nicer way to fix the original vulnerability and even save some queries (YAAYYYY!) is:
Eine bessere Lösung um die Originallücke zu stopfen und um ein paar Abfragen zu sparen ist die folgende:

Search for the following text in MessengerManager::RemoveFromList:
Sucht nach dem folgenden Text in ^
Code:
if (companion.size() == 0)
    return;
and add the following lines below of that:
und fügt die folgenden Zeilen danach ein:

Code:
if (!IsInList(account, companion))
    return;
Then add the following function to messenger_manager.cpp:
Jetzt könnt ihr die folgende Funktion in der ^ hinzufügen:
Code:
bool MessengerManager::IsInList(MessengerManager::keyA account, MessengerManager::keyA companion)
{
    if (m_Relation.find(account) == m_Relation.end())
        return false;

    if (m_Relation[account].empty())
        return false;

    return m_Relation[account].find(companion) != m_Relation[account].end();
}
and ofc dont forget to declare it in messenger_manager.h:
und natürlich auch nicht vergessen diese in ^ zu deklarieren:
Code:
bool    IsInList(MessengerManager::keyA account, MessengerManager::keyA companion);
PS: Der Original fix ist nicht schlecht lediglich etwas am Ziel vorbei (funktionieren tut er auch)
PS: The original fix is not bad its just a little bit over the top (it works perfectly fine )

Kind regards
Mit freundlichen Grüßen
MartPwnS for WoM2
Bitte um Hilfe

Ist die messenger_manager.h so richtig?

PHP Code:
#ifndef __INC_MESSENGER_MANAGER_H
#define __INC_MESSENGER_MANAGER_H

#include "db.h"

class MessengerManager : public singleton<MessengerManager>
{
    public:
        
typedef std::string keyT;
        
typedef const std::string keyA;

        
MessengerManager();
        
virtual ~MessengerManager();

    public:
        
void    P2PLogin(keyA account);
        
void    P2PLogout(keyA account);

        
void    Login(keyA account);
        
void    Logout(keyA account);

        
void    RequestToAdd(LPCHARACTER chLPCHARACTER target);
        
void    AuthToAdd(keyA accountkeyA companionbool bDeny);

        
void    __AddToList(keyA accountkeyA companion);    // 실제 m_Relation, m_InverseRelation 수정하는 메소드
        
void    AddToList(keyA accountkeyA companion);

        
void    __RemoveFromList(keyA accountkeyA companion); // 실제 m_Relation, m_InverseRelation 수정하는 메소드
        
void    RemoveFromList(keyA accountkeyA companion);    

        
void    RemoveAllList(keyA account);

        
void    Initialize();

    private:
        
void    SendList(keyA account);
        
void    SendLogin(keyA accountkeyA companion);
        
void    SendLogout(keyA accountkeyA companion);

        
void    LoadList(SQLMsg pmsg);

        
void    Destroy();

        
std::set<keyT>            m_set_loginAccount;
        
std::map<keyTstd::set<keyT> >    m_Relation;
        
std::map<keyTstd::set<keyT> >    m_InverseRelation;
        
std::set<DWORD>            m_set_requestToAdd;
        
        
bool    IsInList(MessengerManager::keyA accountMessengerManager::keyA companion);
};

#endif 
08/11/2016 18:22 Karakaya~#82
ty bro
09/04/2016 19:42 Walion#83
Hatt jemand 35k files fix Dif ?