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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
how2heap — مستودع لتعلّم مختلف تقنيات استغلال الكومة (Heap). | Kitploit
أدوات/GitHubGitHub/shellphish/how2heap
الاستغلالCTFالتعلم والتعليمموارد منسقةاستغلال الملفات الثنائيةمختبرات وتدريب عملي
GitHubshellphish/how2heap

how2heap

مستودع لتعلّم مختلف تقنيات استغلال الكومة (Heap).

عرض المستودع
8.8k1.3kمنذ 3 أشهرتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

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

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

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

عرض جميع الأدوات →
مشاركة

استغلال الكومة التعليمي

هذا المستودع مخصص لتعلّم تقنيات استغلال الكومة المختلفة. نستخدم إصدارات Libc الخاصة بأوبونتو كمعيار ذهبي. تم التحقق من أن كل تقنية تعمل على إصدارات أوبونتو المقابلة. يمكنك تشغيل apt source libc6 لتنزيل الكود المصدري لمكتبة Libc التي تستخدمها على نظام تشغيل قائم على دبيان. يمكنك أيضًا النقر على ▶️ لتصحيح التقنية في متصفحك باستخدام gdb.

جاءتنا الفكرة خلال اجتماع hack، وقمنا بتنفيذ التقنيات التالية:

الملف▶️التقنيةإصدار Glibcالتصحيحتحديات CTF المناسبة
first_fit.cيوضّح سلوك glibc malloc في الملاءمة الأولى (first-fit).
calc_tcache_idx.cيوضّح حساب فهرس tcache في glibc.
fastbin_dup.c▶️خداع malloc لإرجاع مؤشر كومة مخصّص مسبقًا عبر إساءة استخدام قائمة fastbin الحرة.< 2.43التصحيح
fastbin_dup_into_stack.c▶️خداع malloc لإرجاع مؤشر شبه عشوائي عبر إساءة استخدام قائمة fastbin الحرة.< 2.43التصحيح9447-search-engine, 0ctf 2017-babyheap
fastbin_dup_consolidate.c▶️خداع malloc لإرجاع مؤشر كومة مخصّص مسبقًا بوضع مؤشر في كل من قائمة fastbin الحرة و chunk العلوي (top chunk).< 2.43التصحيح

تخضع GnuLibc لتطوير مستمر، وقد أدت العديد من التقنيات المذكورة أعلاه إلى إدخال فحوصات توافق في منطق malloc/free. ونتيجة لذلك، كثيرًا ما تكسر هذه الفحوصات بعض التقنيات وتتطلب تعديلات لتجاوزها (إن أمكن). نعالج هذه المشكلة بالاحتفاظ بنسخ متعددة من التقنية نفسها لكل إصدار من Glibc تطلّب تعديلًا. البنية هي glibc_<version>/technique.c.

هل لديك مثال جيد؟ أضفه هنا! حاول تضمين التقنية كلها في ملف .c واحد -- فذلك أسهل بكثير للتعلّم.

ابدأ

الإعداد السريع

  • تأكد من تثبيت الحزم/الأدوات التالية: patchelf zstd wget (وبالطبع أيضًا build-essential أو ما شابه للمترجمات، وmake، ...)
  • أيضًا، يجب أن يكون /usr/bin/python هو/يشير إلى ملف python الثنائي لديك (مثل /usr/bin/python3)```shell git clone https://github.com/shellphish/how2heap cd how2heap make clean base ./malloc_playground
root@kitploit:~
لاحظ أن هذا سيربط الثنائيات بمكتبة libc الخاصة بنظامك. إذا كنت تريد اللعب مع إصدارات أخرى من libc. يرجى الرجوع إلى `Complete Setup`.

## الإعداد الكامل

ستواجه مشكلات في إصدار الرموز (انظر [هذا](https://github.com/shellphish/how2heap/issues/169)) إذا حاولت استخدام `LD_PRELOAD` مع libcs لثنائي مُجمَّع على جهازك المضيف.
لدينا طريقتان لتجاوز ذلك.

### الطريقة 1: الربط مع إصدار أقدم من libc
هذه الطريقة تُخبر الرابط (linker) بربط الثنائي الهدف بمكتبة libc الهدف.```shell
git clone https://github.com/shellphish/how2heap
cd how2heap
H2H_USE_SYSTEM_LIBC=N make v2.23

سيربط هذا جميع الثنائيات بمكتبات libc المقابلة. والأفضل من ذلك أنه يأتي مع رموز تصحيح الأخطاء. الآن يمكنك اللعب مع أي إصدار من libc على جهازك المضيف. في هذا المثال، سيتم ترجمة جميع ثنائيات glibc-2.23 وربطها مع libc-2.23. يمكنك تغيير الرقم للعب مع إصدارات libc الأخرى.

الطريقة 2: استخدام docker

يستخدم هذا أسلوبًا قائمًا على Docker لترجمة الثنائيات داخل حاوية ubuntu قديمة بحيث يمكن تشغيلها مع إصدار libc المستهدف.```shell git clone https://github.com/shellphish/how2heap cd how2heap

the next command will prepare the target binary so it runs with

the expected libc version

make base ./glibc_run.sh 2.30 ./malloc_playground -d -p

now you can play with the binary with glibc-2.30

and even debug it with the correct symbols

readelf -d -W malloc_playground | grep RUNPATH # or use checksec readelf -l -W malloc_playground | grep interpreter gdb -q -ex "start" ./malloc_playground

root@kitploit:~
# أدوات استغلال الكومة

هناك بعض أدوات استغلال الكومة المنتشرة هنا وهناك.

## Malloc Playground

ملف `malloc_playground.c` المعطى هو الكود المصدري لبرنامج يطالب المستخدم بالأوامر لتخصيص الذاكرة وتحريرها بشكل تفاعلي.

## Pwngdb

افحص كومة glibc في gdb: https://github.com/scwuaptx/Pwngdb

## pwndbg

إضافة gdb تركّز على الاستغلال وتوفّر القدرة على عرض/التلاعب بكومة glibc: https://github.com/pwndbg/pwndbg

## gef

إضافة gdb ممتازة أخرى توفّر القدرة على فحص كومة glibc: https://github.com/hugsy/gef

## heap-viewer

افحص كومة glibc في IDA Pro: https://github.com/danigargu/heap-viewer

## heaptrace

تساعدك على تصوّر عمليات الكومة عن طريق استبدال العناوين بالرموز: https://github.com/Arinerron/heaptrace

# موارد أخرى

فيما يلي بعض الموارد الجيدة لاستغلال الكومة، مرتبة تقريبًا بعكس ترتيب نشرها:

## دروس مفيدة في استغلال الكومة
- نظرة عامة على تقنيات استغلال كومة GLIBC (https://0x434b.dev/overview-of-glibc-heap-exploitation-techniques/) <!-- 2022 -->
- درس تعليمي معمّق حول glibc (https://heap-exploitation.dhavalkapil.com/) - كتاب ونماذج استغلال <!-- 2022 -->
- تقنيات استغلال الكومة التي تعمل على glibc-2.31 (https://github.com/StarCross-Tech/heap_exploit_2.31) <!-- 2020 -->
- مقدمة سهلة للكومة في نطاق المستخدم على لينكس (https://sensepost.com/blog/2017/painless-intro-to-the-linux-userland-heap/) <!-- 2017 -->
- ptmalloc fanzine، مجموعة من الموارد والأمثلة المتعلقة بهجمات البيانات الوصفية على ptmalloc (http://tukan.farm/2016/07/26/ptmalloc-fanzine/) <!-- 2016 -->
- مغامرات Glibc: القطعة المنسية (https://github.com/bash-c/slides/blob/master/pwn_heap/Glibc%20Adventures:%20The%20forgotten%20chunks.pdf) - استغلال متقدم للكومة <!-- 2015 -->

## استغلال الكومة التاريخي (التاريخ)
- Pseudomonarchia jemallocum (http://www.phrack.org/issues/68/10.html) <!-- 2012 -->
- The House Of Lore: Reloaded (http://phrack.org/issues/67/8.html) <!-- 2010 -->
- Malloc Des-Maleficarum (http://phrack.org/issues/66/10.html) - بعض تقنيات استغلال malloc <!-- 2009 -->
- تقنية أخرى لاستغلال free() (http://phrack.org/issues/66/6.html) <!-- 2009 -->
- استخدام set_head للتغلب على wilderness (http://phrack.org/issues/64/9.html) <!-- 2007 -->
- فهم الكومة عن طريق كسرها (https://www.blackhat.com/presentations/bh-usa-07/Ferguson/Whitepaper/bh-usa-07-ferguson-WP.pdf) - يشرح تنفيذ الكومة وبعض الاستغلالات <!-- 2007 -->
- تقنيات استغلال الكومة في OS X (http://phrack.org/issues/63/5.html) <!-- 2005 -->
- The Malloc Maleficarum (http://seclists.org/bugtraq/2005/Oct/118) <!-- 2005 -->
- استغلال الـ Wilderness (http://seclists.org/vuln-dev/2004/Feb/25) <!-- 2004 -->
- استغلالات malloc المتقدمة لدى Doug lea (http://phrack.org/issues/61/6.html) <!-- 2003 -->

# التحصين
هناك عدد من إجراءات "التحصين" المدمجة في glibc، مثل `export MALLOC_CHECK_=1` (تفعّل بعض الفحوصات)، و`export MALLOC_PERTURB_=1` (تتم الكتابة فوق البيانات)، و`export MALLOC_MMAP_THRESHOLD_=1` (استخدام mmap() دائمًا)، ...

مزيد من المعلومات: [mcheck()](http://www.gnu.org/software/libc/manual/html_node/Heap-Consistency-Checking.html)، [mallopt()](http://www.gnu.org/software/libc/manual/html_node/Malloc-Tunable-Parameters.html).

هناك أيضًا بعض دعم التتبّع مثل [mtrace()](http://manpages.ubuntu.com/mtrace)، و[malloc_stats()](http://manpages.ubuntu.com/malloc_stats)، و[malloc_info()](http://manpages.ubuntu.com/malloc_info)، و[memusage](http://manpages.ubuntu.com/memusage)، وفي دوال أخرى من هذه العائلة.
تنزيل الأداة
Hitcon 2016 SleepyHolder
unsafe_unlink.c▶️استغلال free على chunk تالف لتحقيق كتابة عشوائية (arbitrary write).الأحدثHITCON CTF 2014-stkof, Insomni'hack 2017-Wheel of Robots
house_of_spirit.c▶️يُحرّر chunk fastbin مزيفًا لجعل malloc يُرجع مؤشرًا شبه عشوائي.الأحدثhack.lu CTF 2014-OREO
poison_null_byte.c▶️استغلال تجاوز بايت فارغ واحد.الأحدثPlaidCTF 2015-plaiddb, BalsnCTF 2019-PlainNote
house_of_lore.c▶️خداع malloc لإرجاع مؤشر شبه عشوائي عبر إساءة استخدام قائمة smallbin الحرة.الأحدث
overlapping_chunks.c▶️استغلال الكتابة فوق حجم chunk مُحرَّر في قائمة unsorted bin لجعل تخصيص جديد يتداخل مع chunk موجود< 2.29التصحيحhack.lu CTF 2015-bookstore, Nuit du Hack 2016-night-deamonic-heap
overlapping_chunks_2.c▶️استغلال الكتابة فوق حجم chunk قيد الاستخدام لجعل تخصيص جديد يتداخل مع chunk موجود< 2.29التصحيح
mmap_overlapping_chunks.cاستغلال chunk mmap قيد الاستخدام لجعل تخصيص جديد يتداخل مع chunk mmap حاليالأحدث
house_of_force.c▶️استغلال ترويسة Top Chunk (Wilderness) لجعل malloc يُرجع مؤشرًا شبه عشوائي< 2.29التصحيحBoston Key Party 2016-cookbook, BCTF 2016-bcloud
unsorted_bin_into_stack.c▶️استغلال الكتابة فوق chunk مُحرَّر في قائمة unsorted bin الحرة لإرجاع مؤشر شبه عشوائي.< 2.29التصحيح
unsorted_bin_attack.c▶️استغلال الكتابة فوق chunk مُحرَّر في قائمة unsorted bin الحرة لكتابة قيمة كبيرة إلى عنوان عشوائي< 2.29التصحيح0ctf 2016-zerostorage
large_bin_attack.c▶️استغلال الكتابة فوق chunk مُحرَّر في قائمة large bin الحرة لكتابة قيمة كبيرة إلى عنوان عشوائي< 2.42التصحيح0ctf 2018-heapstorm2
house_of_einherjar.c▶️استغلال تجاوز بايت فارغ واحد لخداع malloc لإرجاع مؤشر مُتحكَّم فيهالأحدثSeccon 2016-tinypad
house_of_water.cاستغلال UAF أو double free للسيطرة على بيانات t-cache الوصفية دون تسريب، وطريقة دون تسريب لربط libc في t-cacheالأحدث37c3 Potluck - Tamagoyaki
sysmalloc_int_free.cيوضّح تحرير Top Chunk (Wilderness) شبه العشوائي الحجم باستخدام malloc (sysmalloc _int_free() )الأحدث
house_of_orange.c▶️استغلال Top Chunk (Wilderness) لتحقيق تنفيذ تعليمات برمجية عشوائي (arbitrary code execution)< 2.26التصحيحHitcon 2016 houseoforange
house_of_tangerine.cاستغلال Top Chunk (Wilderness) لخداع malloc لإرجاع مؤشر عشوائي تمامًا عبر إساءة استخدام قائمة tcache الحرة>= 2.26PicoCTF 2024- high frequency troubles
house_of_roman.c▶️تقنية دون تسريب لتحقيق تنفيذ تعليمات برمجية عن بُعد عبر fastbins مزيفة، وهجوم unsorted_bin، والكتابات فوق النسبية.< 2.29التصحيح
tcache_poisoning.c▶️خداع malloc لإرجاع مؤشر عشوائي تمامًا عبر إساءة استخدام قائمة tcache الحرة. (يتطلب تسريب كومة من الإصدار 2.32 فصاعدًا)> 2.25التصحيح
tcache_house_of_spirit.c▶️يُحرّر chunk مزيفًا لجعل malloc يُرجع مؤشرًا شبه عشوائي.> 2.25
house_of_botcake.c▶️تجاوز قيود double free في tcache. أعد tcache_dup عظيمًا مرة أخرى.> 2.25
tcache_stashing_unlink_attack.c▶️استغلال الكتابة فوق chunk مُحرَّر في قائمة small bin الحرة لخداع malloc لإرجاع مؤشر عشوائي وكتابة قيمة كبيرة إلى عنوان عشوائي بمساعدة calloc.> 2.25Hitcon 2019 one punch man
fastbin_reverse_into_tcache.c▶️استغلال الكتابة فوق chunk مُحرَّر في fastbin لكتابة قيمة كبيرة إلى عنوان عشوائي.2.26 - 2.42التصحيح
house_of_mind_fastbin.c▶️استغلال الكتابة فوق بايت واحد مع معالجة arena لكتابة قيمة كبيرة (مؤشر كومة) إلى عنوان عشوائي< 2.43التصحيح
house_of_storm.c▶️استغلال use-after-free على chunk من large bin وunsorted bin معًا لإرجاع chunk عشوائي من malloc< 2.29
house_of_gods.c▶️تقنية لاختطاف arena الخاصة بسلسلة تعليمات برمجية (thread) خلال 8 عمليات تخصيص< 2.27
decrypt_safe_linking.c▶️فك تشفير القيمة المسمومة في القائمة المرتبطة لاستعادة المؤشر الفعلي>= 2.32
safe_link_double_protect.cتجاوز دون تسريب لـ PROTECT_PTR عبر حماية المؤشر مرتين، مما يسمح بربط مؤشرات عشوائية في t-cache>= 2.3237c3 Potluck - Tamagoyaki
tcache_dup.c(obsolete)خداع malloc لإرجاع مؤشر كومة مخصّص مسبقًا عبر إساءة استخدام قائمة tcache الحرة.2.26 - 2.28التصحيح
tcache_metadata_poisoning.cخداع tcache لتوفير مؤشرات عشوائية عبر التلاعب ببنية بيانات tcache الوصفية>= 2.26
house_of_io.cخداع malloc لإرجاع مؤشر إلى ذاكرة عشوائية عبر التلاعب ببنية إدارة tcache باستخدام UAF في chunk tcache مُحرَّر.2.31 - 2.33
tcache_relative_write.cكتابة قيمة عشرية عشوائية ومؤشر chunk في الكومة عبر كتابة خارج الحدود في بيانات tcache الوصفية2.30-2.41التصحيح
tcache_metadata_hijackingتخصيص عشوائي عبر تجاوز في بيانات tcache الوصفية>= 2.42