19-10-2016, 04:14 PM
|
#1
|
|
• الانـتـسـاب » Aug 2012
|
• رقـم العـضـويـة » 103935
|
• المشـــاركـات » 1,663
|
• الـدولـة » Mansoura
|
• الـهـوايـة » Love the Destruction
|
• اسـم الـسـيـرفـر » Private Server
|
• الـجـنـس » Male
|
• نقـاط التقييم » 75
|
|
|
شرح كامل لغلق ثغرة SQL Inject at about guild
اول حاجه فيه بعض الحلول دي بالفعل معروفة لكن معتدقنش ان كل الحلول دي اتنشرت
لو انت شغال بجارد او من غير برده بتتحل
الحل الاول وهو الاسهل انك تقفل About guild دي خالص :
هتفتح ال SQL وتروح ع التاب دي
"SRO_VT_SHARD" > Tables > _SiegeFortress > وتختار > Design >
هتظهرلك بالشكل دا :

هتنزل علي : IntroductionModificationPermission
تقف عليها وهتغير Default Value Or Binding 1
ل Default Value Or Binding 0
زي كدا بالظبط 
وبكده انت قفلت About guild خالص
حل مشكلة ال DC في بعض السيرفرات الي شغاله وفيها جيلد واخد FTW
اقتباس:
USE SRO_VT_SHARD
Go
/*
Fix DC Bug when use anti sqli Simply way ( sql way )
Coded By EgY_KhaN
*/
UPDATE SRO_VT_SHARD.._SiegeFortress Set Introduction = Null Where GuildID > 0
UPDATE SRO_VT_SHARD.._SiegeFortress Set IntroductionModificationPermission = 0 Where GuildID > 0
Print ' All Done ! '
Print ' Coded By EgY_KhaN'
|
تاني حل لو انت ليك في C# وشغال بجارد هتضيف
السطرين دول في الجارد بتاعك
كود:
#region 0x705E_CLIENT_EXPLOIT
if(packet.Opcode == 0x705E)
{
string message = packet.Opcode.ReadAscii();
if(message.Contains("'"))
{
//message;
continue;
} else if(message.Contains("\""))
{
//message;
continue;
} else if(message.Contains("-"))
{
//message;
continue;
}
}
#endregion
الحل التالت بإستخدام SQL Parse نفس الفكرة برده ونفس الاداء ونفس النتيجة
كود:
if (new[] { '-','\\','\'' }.Any(a => message.Contains(a)))
{
//message;
continue;
}
فيه حل اخر من خلال ال GameServer نفسه بإستخدام برنامج OLLYDBG بس لسه تحت التجربة لو جربته واشتغل تمام هضيفو للموضوع
|
|
التعديل الأخير تم بواسطة ™ EgY_KhaN ™ ; 19-10-2016 الساعة 11:57 PM
|