Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
heapinfo — Eine interaktive Speicherinformation für pwning / exploiting | Kitploit
Tools/GitHubGitHub/david942j/heapinfo
SpeicherforensikExploitationDebuggerCTFBinäranalyseBinary-Exploitation
GitHubdavid942j/heapinfo

heapinfo

Eine interaktive Speicherinformation für pwning / exploiting

Repository anzeigen
981045vor 3 JahrenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

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

HeapInfo

Als Pwn-Liebhaber brauchen wir beim Spielen von CTFs mit Heap-Exploitation immer einen Debugger (z.B. gdb), um das Speicherlayout zu verfolgen. Aber wir brauchen gdb nicht wirklich, wenn wir sehen wollen, ob das Heap-Layout unserer Vorstellung entspricht oder nicht. Hoffentlich hilft uns dieses kleine Tool, einfacher zu exploiten ;).

Warum

HeapInfo ist sehr hilfreich, wenn die Binärdatei irgendwelche Anti-Debugger-Einschränkungen hat, wie z.B. ptrace. HeapInfo funktioniert trotzdem, weil es ptrace nicht verwendet.

Implementiert mit Ruby, weil ich Ruby liebe :P. Aber könnte in Zukunft mit Python implementiert werden (falls niemand anderes es tut).

Wenn du pwntools zum Exploiten bevorzugst, kannst du HeapInfo trotzdem in irb/pry als kleinen Debugger verwenden.

Jegliche Vorschläge für Funktionen oder Fehlerberichte sind willkommen.

Installation

HeapInfo wird noch um weitere Funktionen erweitert, daher kann sich die Version häufig ändern :p

root@kitploit:~
$ gem install heapinfo

Funktionen

  • Kann in deinem Ruby-Exploit-Skript oder in irb/pry verwendet werden.
  • HeapInfo funktioniert, während das Opfer getraced wird! D.h. du kannst ltrace/strace/gdb und HeapInfo gleichzeitig verwenden!
  • dump – Speicher einer beliebigen Adresse ausgeben.
  • layouts – Die aktuellen Bin-Layouts anzeigen, sehr nützlich für Heap-Exploitation.
  • offset – Den Offset zwischen einer gegebenen Adresse und dem Segment anzeigen. Sehr nützlich zum Berechnen relativer Offsets.
  • canary – Den Wert des Stack-Guards abrufen!
  • x – GDB-artige Befehle.
  • s – GDB-artige Befehle.
  • find – GDB-artige Befehle.
  • Weitere Funktionen und Details findest du in der RDoc.

Verwendung

Laden

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"

HINWEIS: Wenn der Prozess nicht gefunden wird, geben die meisten Methoden nil zurück. Eine Möglichkeit, Fehler zu vermeiden, besteht darin, Methoden innerhalb von debug zu wrappen; der Block wird bei Remote-Exploitation ignoriert.

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

Inhalt einer bestimmten Adresse abfragen.

HINWEIS: Du musst die Berechtigung haben, ein Programm anzuhängen, sonst schlägt der Dump fehl.

D.h. /proc/sys/kernel/yama/ptrace_scope auf 0 gesetzt oder als root ausführen.

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 layouts

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

smallbin layouts

root@kitploit:~
h.layouts :tcache

tcache layouts

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-artiger Befehl

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

x/8gx

find - GDB-artiger Befehl

Stellt einen Speicher-Sucher zur Verfügung, einfacher zu bedienen als in (naivem) gdb.

Unterstützt das Suchen von Integer, String und sogar regulären Ausdrücken.

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

Tests

HeapInfo führt derzeit nur Tests auf Ubuntu durch. Folgende glibc-Versionen wurden getestet:

  • libc-2.19
  • libc-2.23
  • libc-2.24
  • libc-2.25
  • libc-2.26
  • libc-2.27
  • libc-2.29
Tool herunterladen