تذكرنــي
التسجيل التعليمات التقويم البحث مشاركات اليوم اجعل كافة الأقسام مقروءة



.:: قسم الثغرات ::. هذا القسم يختص باحدث الثغرات و طرق استغلالها ..

اضافة رد

 
أدوات الموضوع انواع عرض الموضوع

رقم المشاركة : ( 1 )
الصورة الرمزية zero_cool
zero_cool
مشرف
zero_cool غير متواجد حالياً
 
رقم العضوية : 17240
تاريخ التسجيل : Jan 2011
مكان الإقامة :
عدد المشاركات : 638
عدد النقاط : 10
قوة التقييم :
افتراضي ( buffer overflow ) فيض المكدس

كُتب : [ 10-16-2012 - 09:57 PM ]






السلام عليكم ورحمة الله وبركاته



إن شاء الله تكونوا في تمام الصحة والعافية إخواني


مامعنى بافر ؟

البافر هو مكان مؤقت في الذاكرة لتخزين البيانات .

مامعنى بافر أوفر فلو ؟

تقع البافر أوفر فلو عندما تكون البيانات المرسلة للبافر أكبر من حجم البافر ويحصل ذلك بسبب عدم التحقق الكافي من تجاوز حجم البيانات ويؤدي هذا التجاوز إلى فيض البيانات إلى الأماكن المجاورة في الذاكرة .

ملاحظة في لغة السي :

الوظيفة main()هي دائما أول وظيفة يتم إستدعائها عندما تبدأ عملية تنفيذ البرنامج .ولا يوجد برنامج لايحتوي على هذه الوظيفة وكل برنامج يحتوي على وظيفة main () واحدة فقط .

عند تعريف وظيفة نفتح المعقف "{ " ثم نكتب التعليمات تبع تلك الوظيفة ثم نغلق المعقف "}"

نأخذ مثال لبرنامج مصاب :

كود:
#include <stdio.h>

function()
{
    char buffer[4];
    gets(buffer);
    puts(buffer);
}

main()
{
     function();
     return 0;
}
الوظيفة المصابة في هذا البرنامج هي :



كود:
function()
{
    char buffer[4];
    gets(buffer);
    puts(buffer);
}
أولا قمنا في هذه الوظيفة بتعريف الرمز بافر بحجم 4 بايت .
كود:
 char buffer[4]
ثم إستعملنا الوظيفة getsلأخذ مدخلات من المستخدم وملئ البافر (مكان في الذاكرة) بهذه المدخلات.
كود:
  gets (buffer)
ثم إستعملنا الوظيفة putsلعرض هذه المدخلات على
الترمينال
كود:
 puts(buffer)
ماهو الكود المصاب هنا بالتحديد ؟

يكمن الخطر هنا في الوظيفة gets لأنها لاتتحقق من حجم مدخلات المستخدم .
فنحن قمنا بتخصيص مكان في الذاكرة حجمه 4 بايت لتخزين هذه المدخلات التي يمثلها المتغير buffer ..

فمذا لو قام المستخدم بإدخال بيانات حجمها أكبر من 4 بايت ؟

عدم التحقق من حجم البيانات المدخلة من المستخدم يؤدي إلى فيضها إلى أماكن مجاورة في الذاكرة
إذا تجاوز حجم هذه البيانات المدخلة حجم المكان المخصص لها في الذاكرة .





كما رآينا في الصورة السابقة في الأول أدخلنا بيانات حجمها أصغر من 4 بايت فأرجع لنا البرنامج نفس البيانات المدخلة

لكن المرة الثانية أدخلنا بيانات تجاوز حجمها 4 بايت فتوقف البرنامج وعمل كراش .



طيب لو نرجع الآن إلى صورة المكدس التي تحدثنا عليها سابقا .




كنا قد قلنا أنه أولا عندما يتم إستدعاء وظيفة فوسائط argumentsهذه الوظيفة يتم تخزينها في المكدس مثلما هو واضح في الصورة

و ثم RETأيضا تخزن في المكدس والتي قلنا هي تمثل عنوان التعليمة القادمة التي سيقوم المعالج بتنفيذها .

ثم يتم تخزين العنوان القديم للمسجل EBP داخل المكدس .

ثم يتم تخزين المتغير المحلي الذي عرفناه في الوظيفة الجديدة .


خلينا الآن نشوف شكل المكدس مع برنامجنا المصاب




أولا لو نشوف في كود برنامجنا أن الوظيفة function ليس لها arguments لكي يتم دفعهم داخل المكدس .

لكن عندما تقوم main البرنامج بنقل التنفيذ إلى الوظيفة functionحيتم دفع عنوان التعليمة القادمة ( return 0 داخل المكدس .

والتي مثلناها في الصورة ب RET

ثم عندما يبدأ التنفيذ للوظيفة function يعني حنرجع إلى الفوق هنا :

كود:
function()
{
    char buffer[4];
    gets(buffer);
    puts(buffer);
}
يتم تخزين العنوان القديم لل EBP داخل المكدس كما مبين في الصورة

ثم يتم بعد ذلك دفع المتغير المحلي buffer داخل المكدس

كما مبين في الصورة وفي هذا المثال حجمه 4 بايت .

وبعدما يتم دفع المتغير المحلي داخل المكدس بالطبع يجب على ESP أن تغير مكانها .



تعلو الآن نتأكد من شكل المكدس كما في الصورة السابقة بطريقة عملية


قبل كل شيء إخواني نقوم بوقف الحمايات التالية لتبسيط الموضوع وحنتحدث عليهم لاحقا إن شاء الله .

نوقف حماية التوزيع العشوائي لعناوين مقاطع الذاكرة الإفتراضية أي حماية ( ASLR)

كود:
 echo 0 >>  /proc/sys/kernel/randomize_va_space
وعند عملية compilation لو ماطلعت معاك segmentation fault قم بإضافة هذه الخاصية كالتالي : ((إيقاف حماية المكدس ))

كود:
 
gcc -ggdb -mpreferred-stack-boundary=2 -fno-stack-protector -o function function.c
نوقف حماية التوزيع العشوائي لعناوين مقاطع الذاكرة الإفتراضية أي حماية ()
نقوم بفتح البرنامج مع GDB

أولا نقوم بعرض كود البرنامج بالضغط على list كما في الصورة التالية :





طيب الآن نقوم بتحويل الوظيفة main إلى لغة الأسمبلي يتم ذلك بتحويل كل وظيفة على حدى (تذكروا أن أول وظيفة يتم إستدعائها عند تنفيذ كل برنامج بلغة السي هي الوظيفة main() )




الآن نقوم بعمل نقطتان وقوف وحدة عند الوظيفة function والآخرى عند الوظيفة getsكما في الصورة التالية :





نقوم الآن بتشغيل البرنامج




كما تلاحظون في الصورة البرنامج توقف أين وضعنا breakpoint

ثم قمنا بعرض محتوى المكدس إبتداء من عنوان ESP

ماعرضناه هو شكل المكدس قبل إستدعاء الوظيفة function

طيب نواصل التنفيذ كما في الصورة التالية :



طيب مقارنة بمحتوى المكدس سابقا

كما لاحظتم هذه البيانات 0xbffff368 تغير مكانها وتم دفع 12 بايت جديدة داخل المكدس والتي تمثل :

4 bytes لحجم مكان البافر التي قمنا بتعريفها .

و 4 bytes ل لالعنوان القديم ل EBP

و 4 bytes ل RET .

كما توضح الصورة التالية :




طيب نواصل الآن التنفيذ




هنا قمنا بتنفيذ الوظيفة getsوالتي ذكرنا أنها تأخذ مدخلات

من عند المستخدم وقمنا بإدخال بيانات أكبر من 4 بايت وهي AAAAAAAAAA فتم كتابة AAAA في المكان

المخصص للبافر فلم يسعها هذا المكان ففاضت على المكان المجاور في الذاكرة والذي يحتوي على EBP - old فتم إستبدال EBP oldبAAAAوأيضا لم يسعها هذا المكان ففاضت أيضا على المكان المجاور والذي يحتوي على RET فتم إستبدال 2 بايت من RETب AA ثم واصلنا التنفيذ فتوقف البرنامج وكتب
"Segmentation Fault

وذلك لأن المعالج عندما أراد تنفيذ آلتعليمة التالية الذي يشير إليها المسجل EIPوهي RETلم يجد أي تعليمة في البرنامج تحمل هذا العنوان 0x08004141 فتوقف .

يعني ببساطة نحن محتاجين لتعبئة أول 8 بايت لكي نصل إلى قيمة RET ثم نحتاج إلى إستبدال قيمة RETبقيمة جديدة وهذه القيمة الجديدة تمثل عنوان التعليمة التالية التي سيقوم المعالج بتنفيذها .

طيب تعالو الآن نقوم بإضافة وظيفة جديدة للبرنامج المصاب تبعنا .

كود:
#include <stdio.h>

function()
{
    char buffer[4];
    gets(buffer);
    puts(buffer);
}

zero_cool()
{

     printf("salam alikom\n");

     exit(0);

}

  
  
main()
{
     function();
     return 0;
}
طيب اٱن نقوم بعملية compilation ونفتح البرنامج مع GDB ثم نقوم بتحويل الوظيفة zero_cool إلى لغة الأسمبلي كما هو مبين في الصورة التالية :





مذا سنفعل بالظبط ؟

قبل قليل قلنا نصل إلى قيمة RET بعد 8 بايت .
ماسنفعله هو حنقوم بإرسال 8 بايت الأولى أي 4 بايت لتعبئة مكان old EBP و 4 بايت لتعبئة مكان المتغير buffer
ثم 4 بايت لنستبدل RETبعنوان الوظيفة zero_cool

ونشوف مذا سيحصل .





كما رأينا في الصورة إخواني قمنا بتغيير مسار البرنامج وجعلنا من EIP تشير إلى عنوان الوظيفة التالية وهي الوظيفة zero_coolوذلك بإستخدام هجمة البافر أوفر فلو .

طيب لو تلاحظون قمنا بقلب عنوان الوظيفة zero_cool في الذاكرة

المكدس مخزن من أعلى الذاكرة إلى أسفل الذاكرة .

لكن البرنامج عندما يصل إلى البيانات المخزنة في المكدس يقوم بقرائته بالعكس أي من أسفل الذاكرة إلى أعلى الذاكرة .

يعني عندما نقوم بتخزين \xe4\x83\x04\x08


فال \ xe4 حتكون في أعلى الذاكرة


و \x08 حتكون في أسفل الذاكرة

والبرنامج حيسحبهم من المكدس بالترتيب إبتدائا من أسفل الذاكرة بإتجاه أعلى الذاكرة .

يتبع لاحقا إن شاء الله




لاتنسوني من صالح دعاؤكم

في أمان الله





توقيع : zero_cool

.:: فريق قراصنة غزة ::.


آخر تعديل بواسطة قراصنة غزة ، 10-18-2012 الساعة 08:41 AM
رد مع إقتباس
بياناتي
 رقم المشاركة : ( 2 )
TKL
v!p
رقم العضوية : 22361
تاريخ التسجيل : Sep 2011
مكان الإقامة :
عدد المشاركات : 2,301
عدد النقاط : 10

TKL غير متواجد حالياً

.::أَنْتِ الْجَمَاعَةُ وَلَوْ كُنْتُ وَحَدَّكَ ::.

افتراضي

كُتب : [ 10-16-2012 - 10:11 PM ]


متألق دوما اخي
شرح رائع واسلوبك مميز في التبسيط وتوصيل الافكار

في ميزان حسناتك اخي
استمر .

توقيع : TKL




./اذا استفدت من موضوعي او تعليقي لا تشكرني بل إدعو لوالدتي بالشفاءادخل هنا

رد مع إقتباس
بياناتي
 رقم المشاركة : ( 3 )
NO-MERCY

رقم العضوية : 31433
تاريخ التسجيل : Oct 2012
مكان الإقامة :
عدد المشاركات : 26
عدد النقاط : 10

NO-MERCY غير متواجد حالياً

افتراضي

كُتب : [ 10-17-2012 - 12:38 AM ]


يا اخي والله مجهودك يشيد به الجميع وانا اولهم

بالرغم اني لم افهم الكثير ليس تقصيرا منك .... لا بل مني انا

لاني منتظرك بفارغ الصبر الانتقال للويندوز لاني من اصحاب الاجهزة الضعيفة ولا اقدر علي تنصيب الباك تراك كوهمي او اساسي

لكني اتابع دروسك ...... وتعرفت عليك على قناتك في اليو تيوب وسجلت هنا لأتشرف بك فعلا

اخي : كل ما اقدر اقوله لك ,,,,, الله يبارك لك في صحتك ويزيدك من علمه كلما تنفع به غيرك

قلما نجد شخص مثلك

جزاك ربي كل خير انت وكل من يحب ان يعلم الغير

المنتدى هنا ممتع مع اني بعيد كل البعد عن اختراق المواقع نهائيا

لكن عن جد محترمين جدا لم اجد رد فيه غرور على احد او تكبر على احد

على عكس اغلب المنتديات الاخرى

حقا الجميع هنا متميزون

تقبلوا كامل احترامي لكم ودمتم دائما في حفظ الله وأمنه


توقيع : NO-MERCY

.:: فريق قراصنة غزة ::.

رد مع إقتباس
الأعضاء الذين آرسلوا آعجاب لـ NO-MERCY على المشاركة المفيدة:
zero_cool (01-14-2013)
بياناتي
 رقم المشاركة : ( 4 )
Casper
:: فريق قراصنة غزة ::

رقم العضوية : 20
تاريخ التسجيل : Jul 2009
مكان الإقامة :
عدد المشاركات : 14,333
عدد النقاط : 10

Casper غير متواجد حالياً

غريب ./~ حَنتِ يَدآيَ لـِ مِسَآسِ يدآها [ BK ]

افتراضي

كُتب : [ 10-17-2012 - 03:15 AM ]


كل التحيه لك اخي .. الشرح رآئع جدا ..
بارك الله فيك اخي
سأعود للقرأه بدقه مره اخرى
واعتزر على تعديل الموضوع كان فيه خطأ بالتنسيق

توقيع : Casper


أدركت سر رعب الطواغيت من الحركات الإسلامية الخالصة، وهلعهم من أبنائها الصادقين، وذلك لأنهم يتمردون على الدنيا التي يملكها الطغاة، ويدوسون المتاع الرخيص الذي بين أيدي الجبابرة والذي من خلاله يجمعون القطيع ويسوقونه إلى مذابح شهواتهم قرابين رخيصة، إنها عناصر فريدة لا تباع في سوق النخاسة ولا تذوب في حوامض الجاهلية، فتحافظ على أصالتها ونقائها ومثلها ومبادئها في أي جو عاشت ومع أي قوى التقت.
ـــــــــ
عبد الله عزام تقبله الله


رد مع إقتباس
بياناتي
 رقم المشاركة : ( 5 )
b0y h4ck3r
v!p
رقم العضوية : 26024
تاريخ التسجيل : Feb 2012
مكان الإقامة :
عدد المشاركات : 1,158
عدد النقاط : 10

b0y h4ck3r غير متواجد حالياً

افتراضي

كُتب : [ 10-17-2012 - 02:15 PM ]


بارك الله فيك أخ زيروكوول ديما مبدع ماشاء الله

توقيع : b0y h4ck3r



رد مع إقتباس
بياناتي
 رقم المشاركة : ( 6 )
zero_cool
مشرف
رقم العضوية : 17240
تاريخ التسجيل : Jan 2011
مكان الإقامة :
عدد المشاركات : 638
عدد النقاط : 10

zero_cool غير متواجد حالياً

افتراضي

كُتب : [ 10-17-2012 - 08:55 PM ]




عذرا إخواني بالنسبة لل ESPفي هذه الصورة :

عنوانها هو 0xbffff2fc وليس 0xbfff308

لمزيد الفهم حول الموضوع الرجاء متابعة شروحات الأسمبلي على هذا الرابط

كود PHP:
http://gaza-hacker.net/cc/showthread-t_41818.html 
في أمان الله

توقيع : zero_cool

.:: فريق قراصنة غزة ::.

رد مع إقتباس
بياناتي
 رقم المشاركة : ( 7 )
قراصنة غزة
# لا إلـہ إلا اللَّـــہ محمد رسول اللَّـــہ #
رقم العضوية : 6102
تاريخ التسجيل : Jan 2010
مكان الإقامة :
عدد المشاركات : 13,618
عدد النقاط : 10

قراصنة غزة غير متواجد حالياً

# Electronic Jihadist #

افتراضي

كُتب : [ 10-17-2012 - 10:03 PM ]


كعادتك متميز في جميع شروحاتك استعملك الله لنصرة الدين والمجاهدين حفظك الله اخي


توقيع : قراصنة غزة

رد مع إقتباس

اضافة رد

العلامات المرجعية

الكلمات الدلالية (Tags)
buffer, المكدس, overflow, فيض


يتصفح الموضوع حالياً : 2 (0 قرصان و 2 ضيف)
 
أدوات الموضوع
انواع عرض الموضوع

ضوابط المشاركة
لا تستطيع إضافة مواضيع جديدة
لا تستطيع الرد على المواضيع
لا يمكنك اضافة مرفقات
لا يمكنك تعديل مشاركاتك

BB code متاحة
كود [IMG] متاحة
كود HTML معطلة

الانتقال السريع

المواضيع المتشابهه
الموضوع كاتب الموضوع المنتدى مشاركات آخر مشاركة
شرح : مآهي ثغرآت آلـ Buffer OverFlow غضب-حضرموت .:: قسم الثغرات ::. 20 07-24-2014 08:56 AM
Magic Music Editor Buffer Overflow Exploit mr.le0n .:: قسم الثغرات ::. 0 03-04-2011 05:36 PM
ثغرة FathFTP 1.8 EnumFiles Method ActiveX Buffer Overflow SEH بتاريخ اليوم mohd9696 .:: قسم الثغرات ::. 4 02-05-2011 12:38 PM
حصريا ثغرة FathFTP 1.8 FileExists Method ActiveX Buffer Overflow SEH بتاريخ اليوم mohd9696 .:: قسم الثغرات ::. 4 11-21-2010 06:45 PM
ثغرة WM Downloader 3.1.2.2 Buffer Overflow Exploit بتاريخ اليوم mohd9696 .:: قسم الثغرات ::. 0 08-02-2010 08:50 PM


جميع الأوقات بتوقيت GMT +2. الساعة الآن 07:36 AM.



أقسام المنتدى

الأقسام الإسلامية @ .:: القسم الإسلامي العام ::. @ .:: قسم القرآن الكريم وتجويده ::. @ .:: قسم الاناشيد والشريط الاسلامي ::. @ .:: سيرة و قصص الأنبياء و الصحابة ::. @ الأقسام العامة @ .:: قسم الساحة العامة ::. @ .:: قسم فـلـسـطــيــن ::. @ .:: قسم للتوعية الأمنية ::. @ .:: عالم البرامج الكاملة والنادرة ::. @ .:: قسم أخبار التقنية المعلوماتية والتكنولوجية ::. @ .:: قسم عالم المحادثة ::. @ .:: قسم الأمن و الحماية | Security ::. @ ::. قسم حماية الاجهزة والايميلات .:: @ ::. قسم حمايه المواقع والسيرفرات.:: @ ::. قسم إختراق المواقع والأجهزة والبريد الإلكتروني | Hacker .:: @ ::. قسم إختراق المواقع والمنتديات .:: @ ::.قسم إختراق الأجهزه والبريد الاكتروني .:: @ .:: قسم الثغرات ::. @ .:: الركن الترفيهي ::. @ .:: قسم الصور ::. @ .:: ركن الأدارية ::. @ .:: قسم الشكاوي ولأقتراحات ::. @ خاص بشروحات الفيديو @ الأدوات , hack tools @ .:: قسم مساعدة الاعضاء ::. @ :: المواضيع المحذوفة :: @ قسم الانجازات @ .:: جديد قراصنة غزة ::. @ :: قسم استراحة الأعضاء :: @ :: YouTube :: @ .:: القسم التقني ::. @ :: عالمـ الكومبيوتر :: @ :: قسم الجوالات والاتصالات :: @ :: قسم التصميم والغرافيك :: @ خاص للادارة والمشرفين @ :: قسم خاص بالمبتدئين :: @ :: خاص بثغرات المتصفح :: @ :: خاص بشروحات الفيديو :: @ .:: الدورات المقدمة من المشرفين ::. @ :: مشآكل الكومبيوتر وحلولها :: @ .:: للنقاش الجاد ::. @ الملتقى الأدبي .. @ :: طلبات الإشراف :: @ :: كتب الحماية والاختراق security&hacking :: @ البحوث العلمية @ تعليم اللغات الأجنبية @ .:: كتب الكترونية منوعة ::. @ .:: القسم الدعوي ::. @ قسم الكتب الاسلامية @ قسم المواضيع المميزة @ :: قسم خاص بالتشفير :: @ قسم اخبار العالم وقضايا الأمة الإسلامية @ Local root @ دورة إحترآف إلـ Spam Email @ فلسطين , palestine @ .:: مدن وقرى فلسطين ::. @ .:: تاريخ فلسطين ::. @ .:: شهداء فلسطين ::. @ .:: مدينة القدس ::. @ .:: مدينة غزة ::. @ .:: لعروض التصاميم ::. @ .:: لدروس التصاميم ::. @ :: قسم اصدارات وانجازات الفريق :: @ .:: قسم قضية فلسطين ::. @ .:: قسم عروض الاستايلات :.. @ قسم اخبار وقضايا اليهود @ .:: قسم الهاكات وتطوير المنتديات ::. @ ::. قسم المسابقات والنشاطات .:: @ لوحة تحكم سي بانل , cPanel Management @ حماية قواعد البيانات mysql , sql @ لوحة تحكم , Plesk Management @ ادارة سيرفرات Linux @ .:: SQL-injection , حقن قواعد بيانات ::. @ :: قسم خاص بالمبتدئين :: @ .:: قسم الكتب الالكترونية E-BOOK ::. @ .:: قسم تفسير القران الكريم ::. @ قسم الدفاع عن النبي محمد والصحابة وآل البيت @ .:: قسم لغات البرمجة ::. @ قسم برمجة لغة Php , Html @ قسم برمجة لغة mysql , sql @ .:: القسم الرمضانى ::. @ جديد الشيخ نبيل العوضى @ حجب الخدمة , ddos attack @ قسم الاختراق المتقدم @ .:: حماية الاجهزة وطرق كشف التلغيم ::. @ .:: قسم حماية الايميلات :. @ قسم اختراق سيرفرات windows @ .:: دورة قراصنة غزة للتصميم ::. @ .::: أسرى فلسطين ::. @ مدرسة قراصنة غزة لحقن قواعد البيانات @ ::. قسم مشروع الباك تراك backtrack , الميتاسبلويت MetaSploit .:: @ فريق :: Gaza HaCker Injector Team-GHI :: @ دورة أساتذة حقن قواعد البيانات المتقدمة لعام 2017 / 2018 @ GH-InjeCtor-Team @ .:: قسم الصلاة ثم الصلاة ::. @ وَحَرِّضِ الْمُؤْمِنِينَ @ قسم انظمة لينكس Linux, Unix @ قسم الالعاب الالكترونية @ قسم اختراق الشبكات السلكية واللاسلكية @ قسم الميكاترونكس (بناء الروبوتات) @ قسم الدورات المدفوعة @ قسم اختراق الاجهزة اللوحية @ دورات حقن قواعد البيانات للمٌبتدئين من الألف إلى الإحتراف @ قسم الحقن المٌتقَدِّم [بداية العهد] @