Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
windows-x86-shellcode-poc — Windows x86 PoC: تجاوز سعة المخزن المؤقت القائم على المكدس باستخدام شيل كود مخصص على نظام ويندوز 32-بت القديم. | Kitploit
أدوات/GitHubGitHub/nataliadiak/windows-x86-shellcode-poc
تحليل الثغرات الأمنيةالهندسة العكسيةشيل كودالتعلم والتعليمتطوير الحمولاتاستغلال الملفات الثنائية
GitHubnataliadiak/windows-x86-shellcode-poc

windows-x86-shellcode-poc

Windows x86 PoC: تجاوز سعة المخزن المؤقت القائم على المكدس باستخدام شيل كود مخصص على نظام ويندوز 32-بت القديم.

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة
عرض المستودع
82منذ 3 أشهرلم تتم المراجعة بعد

برهان اختراق تجاوز سعة المخزن المؤقت لـ Windows x86 للمبتدئين

هذا برنامج تعليمي بسيط ومكتفي بذاته حول استغلالات تجاوز سعة المخزن المؤقت القائمة على المكدس لنظام Windows 32 بت. لا حاجة لأدلة خارجية—كل ما تحتاجه هنا.

ما هو هذا المستودع؟

  • vulnerable.c: برنامج بسيط يحتوي على دالة gets() غير آمنة.
  • messageBox.asm: حمولة صغيرة بلغة التجميع سيتم تنفيذها بعد التجاوز.
  • exploit.c: مثال على كيفية تشغيل التجاوز.

يعلم هذا المشروع فكرة واحدة أساسية: قراءة الإدخال غير الآمنة يمكن أن تسمح للمهاجم بتجاوز عنوان الإرجاع وإعادة توجيه التنفيذ.

الثغرة: gets() ليس لها حد للحجم

في vulnerable.c، يقوم البرنامج بذلك:

root@kitploit:~
char buffer[32];
gets(buffer);

يحجز البرنامج 32 بايت لـ buffer، ثم يستدعي gets() لقراءة الإدخال. المشكلة: gets() لا تتحقق من حجم المخزن المؤقت. تستمر في قراءة الأحرف حتى تواجه سطرًا جديدًا. إذا كتب المستخدم 40 أو 50 حرفًا، فإن الأحرف الإضافية تتجاوز سعة المخزن المؤقت البالغ 32 بايت.

كيف يتم ترتيب الذاكرة على المكدس

عندما يتم تشغيل دالة C، يخزن المكدس (منطقة من الذاكرة):

  1. المتغيرات المحلية (مثل buffer)
  2. EBP المحفوظ (مؤشر القاعدة من الدالة المستدعاة)
  3. عنوان الإرجاع المحفوظ (حيث يجب أن يقفز المعالج عندما تعود الدالة)

تصورها هكذا:

root@kitploit:~
Lower addresses (top of stack as drawn)
[  buffer (32 bytes)  ]
[    saved EBP (4 bytes)     ]
[  return address (4 bytes)  ]
Higher addresses (bottom)

عندما يتجاوز gets() سعة buffer بإدخال كبير جدًا، فإن البايتات الإضافية تستبدل EBP المحفوظ ثم عنوان الإرجاع.

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

كيف يعمل الاستغلال: خطوة بخطوة

  1. يبدأ البرنامج ويخصص buffer[32] على المكدس.
  2. يستدعي gets(buffer) لقراءة سطر من إدخال المستخدم.
  3. نرسل سلسلة أطول من 32 بايت (على سبيل المثال، 50 بايت).
  4. gets() لا تتحقق من الحجم، لذا تكتب جميع الـ 50 بايت في المخزن المؤقت.
  5. الـ 18 بايت الإضافية تتجاوز buffer وتستبدل EBP المحفوظ وعنوان الإرجاع.
  6. نبني التجاوز بعناية بحيث يشير عنوان الإرجاع إلى كود شل على المكدس.
  7. عندما تعود الدالة، يقرأ المعالج عنوان الإرجاع المستبدل.
  8. يقفز المعالج إلى كود الشل.
  9. يتم تشغيل كود الشل تحت أذونات البرنامج.

هذا أبسط شكل لتنفيذ الكود من خلال تجاوز سعة المخزن المؤقت.

ما يحدث في كود الشل: الحمولة

messageBox.asm هو جزء صغير من الكود مصمم للتشغيل بعد التجاوز.

يقوم بما يلي:

  1. تحميل USER32.DLL: يستدعي LoadLibraryA مع السلسلة "USER32.DLL" لضمان وجود المكتبة في الذاكرة.
  2. تحضير وسائط MessageBoxA: يدفع أربع وسائط إلى المكدس (مقبض النافذة، نص الرسالة، التسمية التوضيحية، نوع الزر).
  3. استدعاء MessageBoxA: يستدعي دالة Windows API لعرض مربع رسالة مع النص "CAN I HACK THE PC?".
  4. خروج نظيف: يستدعي ExitProcess لإنهاء البرنامج بأمان.

النقطة الأساسية: هذا كود قابل للتنفيذ يتم تشغيله بعد أن يعيد التجاوز توجيه التنفيذ إليه.

عند ظهور مربع الرسالة على الشاشة، يثبت ثلاثة أشياء:

  1. نجح تجاوز سعة المخزن المؤقت وأعاد كتابة عنوان الإرجاع.
  2. قفز التنفيذ إلى كود الشل على المكدس.
  3. تم تشغيل كود الشل بنجاح وأجرى استدعاءات Windows API.

في هجوم حقيقي، يمكن لهذه الحمولة أن تفعل أي شيء: سرقة البيانات، إنشاء مستخدم، تنزيل برمجيات خبيثة، إلخ. مربع الرسالة هو مجرد طريقة مرئية وآمنة لإظهار أن تنفيذ الكود التعسفي حدث.

تستخدم هذه الحمولة المحددة عناوين ذاكرة ثابتة لكل من MessageBoxA (0x751D8830) و ExitProcess (0x7437ADB0). هذه العناوين خاصة بنظام واحد. ستحتاج الحمولة إلى التعديل لإصدار Windows آخر أو نظام آخر.

MessageBoxA

كيفية بناء وتشغيل العرض التوضيحي

الخطوة 1: تعطيل الحمايات

يحتوي Windows الحديث على ميزات أمان متعددة تمنع هذا الاستغلال:

  • طيور الكناري المكدس (علامة GS): يكتشف الكتابة فوق المكدس.
  • ASLR (DYNAMICBASE): يوزع عناوين الذاكرة عشوائيًا بحيث لا تعمل العناوين الثابتة.
  • DEP/NX (NXCOMPAT): يميز المكدس بأنه غير قابل للتنفيذ لمنع تنفيذ الكود هناك.

لهذا التمرين التعليمي، نقوم بتعطيلهم جميعًا.

الخطوة 2: الترجمة على Windows

استخدم MSVC (Microsoft Visual C++) مع العلامات المحددة:

root@kitploit:~
cl /c /GS- /W3 /Zl vulnerable.c
link /SUBSYSTEM:CONSOLE /DYNAMICBASE:NO /NXCOMPAT:NO vulnerable.obj /OUT:vulnerable.exe

معاني العلامات:

  • /GS- تعطيل حماية تجاوز سعة المخزن المؤقت للمكدس.
  • /DYNAMICBASE:NO تعطيل توزيع مساحة العنوان العشوائي (ASLR).
  • /NXCOMPAT:NO تعطيل DEP، مما يسمح بتنفيذ الكود على المكدس.

إذا كان لديك بالفعل الملف القابل للتنفيذ، يمكنك تعطيل الحمايات باستخدام editbin:

root@kitploit:~
editbin /NXCOMPAT:NO /DYNAMICBASE:NO vulnerable.exe

الخطوة 3: تشغيله

  1. قم بتشغيل vulnerable.exe.
  2. عندما يُطلب منك، أدخل سلسلة طويلة (أكثر من 32 حرفًا).
  3. إذا نجح التجاوز، يتم استبدال عنوان الإرجاع المحفوظ.
  4. قد يتعطل البرنامج، أو يقفز إلى ذاكرة عشوائية، أو (في استغلال حقيقي مع كود شل مناسب) ينفذ الحمولة.

لماذا ملف README كامل

يشرح ملف README هذا:

  1. ما هي gets() ولماذا هي غير آمنة (لا حد للحجم).
  2. كيف يخزن المكدس المتغيرات المحلية، والمسجلات المحفوظة، وعناوين الإرجاع.
  3. كيف يمكن للتجاوز أن يستبدل عنوان الإرجاع.
  4. كيف يستخدم المعالج عنوان الإرجاع عندما تعود الدالة.
  5. كيف يمكن لكود الشل التنفيذ عندما يشير إليه عنوان الإرجاع.
  6. ما هي الحمايات الموجودة ولماذا نقوم بتعطيلها.
  7. كيفية بناء وتشغيل المثال.

الآن تفهم تدفق استغلال تجاوز سعة المخزن المؤقت بالكامل. اقرأ ملفات الكود وقارنها بهذا الشرح لترسيخ فهمك.

إشعار أمان مهم

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

تنزيل الأداة