antiblock
Elveron
  • Chatbox

    Did you check out our Discord? https://discord.gg/FFdvMjk9xA
    You don't have permission to chat.
    Load More
M2Kingdoms

[Fix][C++] Sql Injection Em Messenger E Guild. 40K+

3 posts in this topic

Olá, recentemente recebi um ataque em que me apagaram as tabelas dos jogadores todas. Como procurei sobre isso consegui encontrar um tutorial que deixou esse hack sem efeito. 
 
Siga o tutorial:
 
Primeiro vamos encontrar o ficheiro: Messenger_manager.cpp
 
 
Procuram a função: MessengerManager::RemoveFromList
( Recomendado uso de Notepad++ ou Editor do WinSCP)
 
E por cima desse código metem isto:
 

void MessengerManager::RemoveFromList(MessengerManager::keyA account, MessengerManager::keyA companion)
{
    if (companion.empty())
        return;

    char companionEscaped[CHARACTER_NAME_MAX_LEN * 2 + 1];
    DBManager::instance().EscapeString(companionEscaped, sizeof(companionEscaped), companion.c_str(), companion.length());


    DBManager::instance().Query("DELETE FROM messenger_list%s WHERE account='%s' AND companion = '%s'",
                                get_table_postfix(), account.c_str(), companionEscaped);


    __RemoveFromList(account, companion);

    sys_log(1, "Messenger Remove %s %s", account.c_str(), companion.c_str());

    TPacketGGMessenger pack;
    pack.bHeader = HEADER_GG_MESSENGER_REMOVE;
    strlcpy(pack.szAccount, account.c_str(), sizeof(pack.szAccount));
    strlcpy(pack.szCompanion, companion.c_str(), sizeof(pack.szCompanion));
    P2P_MANAGER::instance().Send(&pack, sizeof(TPacketGGMessenger));
} 

 


 
Feito isso, agora procuramos o ficheiro  guild_manager.cpp e procuram a função: CGuildManager::CreateGuild
 
Encontram este texto que vai estar por baixo do CGuild

std::unique_ptr<SQLMsg> pmsg(DBManager::instance().DirectQuery("SELECT COUNT(*) FROM guild%s WHERE name = '%s'",
                                                                   get_table_postfix(), __escape_name)); 

 

 
Ou se não conseguirem encontrar tentem com este:
 


 

std::auto_ptr<SQLMsg> pmsg(DBManager::instance().DirectQuery("SELECT COUNT(*) FROM guild%s WHERE name = '%s'",
                get_table_postfix(), gcp.name));

 


 
E por cima isto:
 

static char __escape_name[GUILD_NAME_MAX_LEN * 2 + 1];
    DBManager::instance().EscapeString(__escape_name, sizeof(__escape_name), static_cast<const char *>(gcp.name), sizeof(gcp.name));

 
Também substituir:
 


 

get_table_postfix(), gcp.name


 
Por isto:
 

get_table_postfix(), __escape_name


 
Se não souberem onde meter esse código, têm que substituir neste código.
 

std::auto_ptr<SQLMsg> pmsg(DBManager::instance().DirectQuery("SELECT COUNT(*) FROM guild%s WHERE name = '%s'",
                get_table_postfix(), gcp.name)); 


 
Compactam e testem.
 
Tutorial traduzido por mim: RaikiriPT
Créditos: .Alpha.star20.gif
Fonte: http://www.elitepvpers.com/forum/metin2-pserver-guides-strategies/3945017-fix-c-sql-injection-messenger-guild.html
Versão: 40k+
 
 
Cumprimentos, RaikiriPT.

Share this post


Link to post
Share on other sites
antiblock
https://arwen2.global/

A questão é...
Como conseguir o hack e testar meu sistema ? Pra saber se teve efeito...

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now