[Fix] Güvenlik Açığı [Kill pidDB]

Kaiser

⋞ 〈 ☪ 〉 ⋟
Yönetici
Premium Üye
Geliştirici
Yardımsever Üye
Editör
Mesaj
3.657
Çözümler
343
Beğeni
3.496
Puan
1.849
#FR0Z3N isimli kişinin kullandığı bir açık olduğu söyleniyor.
Açık: Karakter seçim ekranında spam yaparak HEADER_CG_CHARACTER_SELECT paketi aracılığı ile işlemler veritabanı üzerinden sonlandırılır ve sunucu kapatılır.

Önlemek için input_login.cpp açın ve aratın:
C++:
db_clientdesc->DBPacket(HEADER_GD_PLAYER_LOAD, d->GetHandle(), &player_load_packet, sizeof(TPlayerLoadPacket));

Değiştirin:
C++:
if (player_load_packet.player_id == 0)
{
    sys_err("invalid player_id from account %d\n",c_r.id);
    d->DelayedDisconnect(0);
    return;
}
db_clientdesc->DBPacket(HEADER_GD_PLAYER_LOAD, d->GetHandle(), &player_load_packet, sizeof(TPlayerLoadPacket));



Alternatif yol -> yukarıdakini arattığınızda, üst satırlarda şunu göreceksiniz:

C++:
TPlayerLoadPacket player_load_packet;

Bunun üstüne ekleyin:
C++:
if (!c_r.players[pinfo->index].dwID)
{
    d->SetPhase(PHASE_CLOSE);
    return;
}

uiHzEus.jpg
 
bu fix i kesin yapmak gerekiyormu ? birde bu fix e gerek varmı yokmu nasıl test ediriz?
 
Geri
Üst