[Metin2] Messenger SQL Injection [Tamamen Fix]
Tamamlayıcı için kaçış dizisi kullanmıyorsanız bile, işlev haritalarda yardımcı ve hesapta arama yapar. Sonuç pozitif değilse, işlev kendini durduracak ve syserr'de bir günlük yazacaktır.
Bunu messenger_manager.cpp içinde arayın :
Bu şekilde değiştirin :
Bu SQL enjeksiyonunu kullanmaya çalışan kimseyi yasaklamak istiyorsanız, işte size bir kod :
Tamamlayıcı için kaçış dizisi kullanmıyorsanız bile, işlev haritalarda yardımcı ve hesapta arama yapar. Sonuç pozitif değilse, işlev kendini durduracak ve syserr'de bir günlük yazacaktır.
Bunu messenger_manager.cpp içinde arayın :
C++:
void MessengerManager::RemoveFromList(MessengerManager::keyA account, MessengerManager::keyA companion)
Bu şekilde değiştirin :
C++:
void MessengerManager::RemoveFromList(MessengerManager::keyA account, MessengerManager::keyA companion)
{
if (companion.empty())
return;
// Second fix
if (m_Relation[account].find(companion) == m_Relation[account].end() || m_InverseRelation[companion].find(account) == m_InverseRelation[companion].end())
{
LPCHARACTER ch = CHARACTER_MANAGER::Instance().FindPC(account.c_str());
if (ch)
{
sys_err("MessengerManager::RemoveFromList: %s tries to use messenger sql injection", ch->GetName());
if (ch->GetDesc())
ch->GetDesc()->DelayedDisconnect(3);
}
else
sys_err("MessengerManager::RemoveFromList: Omg! The ghost tried to use this function!");
return;
}
sys_log(1, "MessengerManager::RemoveFromList: Remove %s %s", account.c_str(), companion.c_str());
DBManager::instance().Query("DELETE FROM messenger_list%s WHERE account='%s' AND companion = '%s'", get_table_postfix(), account.c_str(), companion.c_str());
__RemoveFromList(account, companion);
TPacketGGMessenger p2ppck;
p2ppck.bHeader = HEADER_GG_MESSENGER_REMOVE;
strlcpy(p2ppck.szAccount, account.c_str(), sizeof(p2ppck.szAccount));
strlcpy(p2ppck.szCompanion, companion.c_str(), sizeof(p2ppck.szCompanion));;
P2P_MANAGER::instance().Send(&p2ppck, sizeof(TPacketGGMessenger));
}
Bu SQL enjeksiyonunu kullanmaya çalışan kimseyi yasaklamak istiyorsanız, işte size bir kod :
C++:
void MessengerManager::RemoveFromList(MessengerManager::keyA account, MessengerManager::keyA companion)
{
if (companion.empty())
return;
// Second fix
if (m_Relation[account].find(companion) == m_Relation[account].end() || m_InverseRelation[companion].find(account) == m_InverseRelation[companion].end())
{
LPCHARACTER ch = CHARACTER_MANAGER::Instance().FindPC(account.c_str());
if (ch)
{
sys_err("MessengerManager::RemoveFromList: %s tries to use messenger sql injection", ch->GetName());
DBManager::Instance().DirectQuery("UPDATE account.account SET status = 'BAN' WHERE id = %u", ch->GetAID());
if (ch->GetDesc())
ch->GetDesc()->DelayedDisconnect(3);
}
else
sys_err("MessengerManager::RemoveFromList: Omg! The ghost tried to use this function!");
return;
}
sys_log(1, "MessengerManager::RemoveFromList: Remove %s %s", account.c_str(), companion.c_str());
DBManager::instance().Query("DELETE FROM messenger_list%s WHERE account='%s' AND companion = '%s'", get_table_postfix(), account.c_str(), companion.c_str());
__RemoveFromList(account, companion);
TPacketGGMessenger p2ppck;
p2ppck.bHeader = HEADER_GG_MESSENGER_REMOVE;
strlcpy(p2ppck.szAccount, account.c_str(), sizeof(p2ppck.szAccount));
strlcpy(p2ppck.szCompanion, companion.c_str(), sizeof(p2ppck.szCompanion));;
P2P_MANAGER::instance().Send(&p2ppck, sizeof(TPacketGGMessenger));
}
En Çok Reaksiyon Alan Mesajlar
Öğeyi görmek için üye olmalısınız. Daha önce paylaşıldığı için kapatıldı.
teşekkürler devde paylaşılan fix mi ?
Bir kontrol sağlamadım fakat bakıp karşılaştırmanızda fayda var.
Saol bi ara bakayım.Bir kontrol sağlamadım fakat bakıp karşılaştırmanızda fayda var.
Saol bi ara bakayım.
Rica ederim.
- Durum
- Üzgünüz bu konu cevaplar için kapatılmıştır...
Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)
Benzer konular
- Cevaplar
- 0
- Görüntüleme
- 305
- Cevaplar
- 11
- Görüntüleme
- 1K