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 es0x39684138
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