M2Kingdoms 110 Posted February 8, 2016 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: RaikiriPTCréditos: .Alpha.Fonte: http://www.elitepvpers.com/forum/metin2-pserver-guides-strategies/3945017-fix-c-sql-injection-messenger-guild.htmlVersão: 40k+ Cumprimentos, RaikiriPT. 4 nagatto, Mao, baneme22 and 1 other reacted to this Share this post Link to post Share on other sites
Dynamic Things 965 Posted June 22, 2017 Apesar de não ser a forma correcta de o fazer, obrigado a mesma pela partilha :) 2 kami4001 and Amizades 0.0 reacted to this Share this post Link to post Share on other sites
obetuno 431 Posted June 23, 2017 A questão é... Como conseguir o hack e testar meu sistema ? Pra saber se teve efeito... 1 portoswat reacted to this Share this post Link to post Share on other sites