Como generar offset sin metasploit

bo

Cómo sacar el offset (dónde cae el EIP) SIN usar pattern_offset.rb de Metasploit es lo que veremos ahora mismo para hacerlo de forma manual. SI aun no sabes hacerlo de forma básica, haz click aquí para aprender del offset

Puedes generar tu patrón con un pequeño script Python :

import itertools

def pattern_create(length):
    pattern = ''
    charset = ('ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz', '0123456789')
    for x in itertools.product(*charset):
        pattern += ''.join(x)
        if len(pattern) >= length:
            return pattern[:length]
    return pattern

length = 500  # Cambia por el número de bytes que necesites
print(pattern_create(length))

Con eso generas el patrón personalizado.

Para buscar el offset manualmente

1. Copias el patrón generado.

2. Cuando tu programa crashea, anotas el EIP (ej: 39684138).

3. En tu patrón, buscas ese valor convertido a string "humanamente"

ejemplo:

  • 39684138 en hex es 0x39684138

  • Interpretándolo como ASCII: '8Ahi9' (depende el contexto)

Entonces buscas '8Ahi9' en el patrón generado.

También puedes usar un comando tipo:

grep -oba 'valor_en_ascii' patron.txt

(donde patron.txt contiene el patrón que generaste).

El número que te da el grep es tu offset.

En conclusion es :

  • Generar patrón ➔ patrón largo de caracteres únicos.

  • Hacer crashear el programa.

  • Anotar EIP ➔ buscar ese valor en el patrón.

  • Sacar offset ➔ posición donde aparece.

Last updated