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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
heapinfo — معلومات ذاكرة تفاعلية لـ pwning / exploiting | Kitploit
أدوات/GitHubGitHub/david942j/heapinfo
تحليل الذاكرة الجنائيالاستغلالمصممي الأخطاءCTFتحليل الملفات الثنائيةاستغلال الملفات الثنائية
GitHubdavid942j/heapinfo

heapinfo

معلومات ذاكرة تفاعلية لـ pwning / exploiting

عرض المستودع
98106منذ 3 سنواتتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

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

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

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

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

Build Status Downloads Code Climate Issue Count Test Coverage Inline docs MIT License

HeapInfo

كمحبين لـ pwn، أثناء اللعب في مسابقات CTF مع استغلال الكومة (heap)، نحتاج دائمًا إلى مصحح (مثل gdb) لتتبع تخطيط الذاكرة. لكننا لا نحتاج فعليًا إلى gdb إذا أردنا معرفة ما إذا كان تخطيط الكومة مطابقًا لتخيلنا أم لا. آمل أن تساعدنا هذه الأداة الصغيرة في تسهيل الاستغلال ;).

لماذا

HeapInfo مفيدة جدًا عندما يكون للبرنامج الثنائي قيود مضادة للمصحح، مثل كونه تحت ptrace. HeapInfo لا تزال تعمل لأنها لا تستخدم ptrace.

مطوّرة بلغة Ruby لأنني أحب Ruby :P. ولكن قد أقوم بتطويرها بلغة Python (إذا لم يقم أحد بذلك) في المستقبل.

إذا كنت تفضل pwntools للاستغلال، فلا يزال بإمكانك استخدام HeapInfo في irb/pry كمصحح صغير.

أي اقتراح لميزات أو تقارير عن أخطاء مرحب به.

التثبيت

HeapInfo لا تزال قيد التطوير لإضافة المزيد من الميزات، لذلك قد يتغير الإصدار بشكل متكرر :p

root@kitploit:~
$ gem install heapinfo

الميزات

  • يمكن استخدامه في سكريبت الاستغلال بلغة Ruby أو في irb/pry.
  • HeapInfo يعمل حتى عندما يكون victim تحت التتبع! أي يمكنك استخدام ltrace/strace/gdb وHeapInfo في وقت واحد!
  • dump - تفريغ الذاكرة من أي عنوان.
  • layouts - عرض تخطيطات الصناديق (bins) الحالية، مفيد جدًا لاستغلال الكومة.
  • offset - عرض الإزاحة بين عنوان معين ومقطع. مفيد جدًا لحساب الإزاحة النسبية.
  • canary - جلب قيمة حارس المكدس!
  • x - أوامر على غرار GDB.
  • s - أوامر على غرار GDB.
  • find - أوامر على غرار GDB.
  • المزيد من الميزات والتفاصيل يمكن العثور عليها في RDoc

الاستخدام

تحميل

root@kitploit:~
require 'heapinfo'
# ./victim is running
h = heapinfo('victim') 
# or use h = heapinfo(20568) to specify a pid

# will present simple info when loading:
# Program: /home/heapinfo/victim PID: 20568
# victim          base @ 0x400000
# [heap]          base @ 0x11cc000
# [stack]         base @ 0x7fff2b244000
# libc-2.19.so    base @ 0x7f892a63a000
# ld-2.19.so      base @ 0x7f892bee6000
# canary          value: 0x84b742f03d94c100

# query segments' info
"%#x" % h.libc.base
#=> "0x7f892a63a000"
h.libc.name
#=> "/lib/x86_64-linux-gnu/libc-2.19.so"
"%#x" % h.elf.base
#=> "0x400000"
"%#x" % h.heap.base
#=> "0x11cc000"

ملاحظة: عندما لا يتم العثور على العملية، ستعيد معظم الطرق nil. إحدى طرق منع حدوث خطأ هي تغليف الطرق داخل debug، سيتم تجاهل الكتلة عند القيام بالاستغلال عن بُعد.

root@kitploit:~
h = heapinfo('remote')
# Process not found
h.pid # nil

# wrapper with `debug` so that no error will be raised when pwning remote service
h.debug { fail unless leak_libc_base == h.libc.base }

Dump

الاستعلام عن محتوى عنوان معين.

ملاحظة: يجب أن يكون لديك صلاحية إرفاق برنامج، وإلا سيفشل التفريغ.

أي: /proc/sys/kernel/yama/ptrace_scope مضبوط على 0 أو التشغيل كجذر.

root@kitploit:~
h.debug do
  p h.dump(:libc, 8)
  #=> "\x7FELF\x02\x01\x01\x00"
  p h.dump(:heap, 16)
  #=> "\x00\x00\x00\x00\x00\x00\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00"
  p h.dump('heap+0x30', 16) # support offset!
  #=> "\x00\x00\x00\x00\x00\x00\x00\x00\x81\x00\x00\x00\x00\x00\x00\x00"
  p h.dump('heap+0x30 * 3 + 0x8', 16) # and even complex formula!
  #=> "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
  p h.dump(:program, 8)
  #=> "\x7FELF\x02\x01\x01\x00"
  p h.dump(0x400000, 8) # or simply give address
  #=> "\x7FELF\x02\x01\x01\x00"
end

# invalid example:
# h.dump('meow') # no such segment

layouts

root@kitploit:~
h.layouts :fast

تخطيطات fastbin

root@kitploit:~
h.layouts :unsorted, :small

تخطيطات smallbin

root@kitploit:~
h.layouts :tcache

تخطيطات tcache

offset

root@kitploit:~
h.offset(0x7fda86fe8670)
# 0xf6670 after libc
h.offset(0x1839cd0, :heap) # specific segment name
# 0x20cd0 after heap
h.offset(0x1839cd0)
# 0x20cd0 after heap

offset

canary

root@kitploit:~
h.canary.to_s(16)
#=> '84b742f03d94c100'

x - أمر على غرار GDB

root@kitploit:~
h.x 8, :heap

x/8gx

find - أمر على غرار GDB

يوفر أداة بحث في الذاكرة، أسهل في الاستخدام من (gdb الساذج).

يدعم البحث عن الأعداد الصحيحة، السلاسل النصية، وحتى التعبيرات النمطية.

root@kitploit:~
h.find(0xdeadbeef, 'heap+0x10', 0x1000)
#=> 6299664 # 0x602010
h.find(/E.F/, 0x400000, 4)
#=> 4194305 # 0x400001
h.find(/E.F/, 0x400000, 3)
#=> nil

# Get relative offset of searching result
h.find('/bin/sh', :libc, rel: true)
#=> 1622391 # 0x18c177
h.offset(h.find('/bin/sh', :libc))
# 0x18c177 after libc

الاختبارات

HeapInfo حاليًا تُجرى الاختبارات فقط على Ubuntu، فيما يلي إصدارات glibc المختبرة:

  • libc-2.19
  • libc-2.23
  • libc-2.24
  • libc-2.25
  • libc-2.26
  • libc-2.27
  • libc-2.29
تنزيل الأداة