Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
heapinfo — Información interactiva de la memoria para pwning / explotación | Kitploit
Herramientas/GitHubGitHub/david942j/heapinfo
Forensia de MemoriaExplotaciónDepuradoresCTFAnálisis de BinariosExplotación de Binarios
GitHubdavid942j/heapinfo

heapinfo

Información interactiva de la memoria para pwning / explotación

Ver Repositorio
9810hace 3 añosRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

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

HeapInfo

Como amantes del pwn, mientras jugamos CTF con explotación de heap, siempre necesitamos un depurador (por ejemplo, gdb) para rastrear el diseño de la memoria. Pero realmente no necesitamos gdb si queremos ver si el diseño del heap coincide con nuestra imaginación o no. ¡Espero que esta pequeña herramienta nos ayude a explotar más fácilmente ;).

Por qué

HeapInfo es muy útil cuando el binario tiene limitaciones anti-depurador, como estar siendo ptraceado. HeapInfo sigue funcionando porque no usa ptrace.

Implementado en Ruby porque amo Ruby :P. Pero podría implementarse en Python (si nadie más lo hace) en el futuro.

Si prefieres pwntools para explotar, aún puedes usar HeapInfo en irb/pry como un pequeño depurador.

Cualquier sugerencia de funcionalidades o informes de errores son bienvenidos.

Instalación

HeapInfo aún está en desarrollo para más funcionalidades, por lo que la versión puede cambiar frecuentemente :p

root@kitploit:~
$ gem install heapinfo

Características

  • Se puede usar en tu script de explotación Ruby o en irb/pry.
  • ¡HeapInfo funciona cuando la víctima está siendo trazada! Es decir, puedes usar ltrace/strace/gdb y HeapInfo simultáneamente.
  • dump - Volcar memoria de una dirección arbitraria.
  • layouts - Mostrar el diseño actual de los bins, muy útil para explotación de heap.
  • offset - Mostrar el desplazamiento entre una dirección dada y un segmento. Muy útil para calcular desplazamientos relativos.
  • canary - Obtener el valor del stack guard.
  • x - Comandos estilo GDB.
  • s - Comandos estilo GDB.
  • find - Comandos estilo GDB.
  • Más funcionalidades y detalles se pueden encontrar en RDoc

Uso

Cargar

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"

NOTA: Cuando el proceso no se encuentra, la mayoría de los métodos devolverán nil. Una forma de evitar errores es envolver los métodos dentro de debug; el bloque se ignorará durante la explotación remota.

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

Consultar el contenido de una dirección específica.

NOTA: Debes tener permiso para adjuntar un programa, de lo contrario dump fallará.

Es decir, /proc/sys/kernel/yama/ptrace_scope configurado en 0 o ejecutar como root.

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 - Comando estilo GDB

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

x/8gx

find - Comando estilo GDB

Proporciona un buscador de memoria, más fácil de usar que en (ingenuo) gdb.

Soporta búsqueda de enteros, cadenas e incluso expresiones regulares.

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

Actualmente HeapInfo solo ejecuta pruebas en Ubuntu, las siguientes son versiones de glibc probadas:

  • libc-2.19
  • libc-2.23
  • libc-2.24
  • libc-2.25
  • libc-2.26
  • libc-2.27
  • libc-2.29
Descargar herramienta