findjmp me salta a ESP pero no a la dirección a la que apunta!!

Iniciado por black_flowers, 6 Abril 2011, 08:40 AM

0 Miembros y 1 Visitante están viendo este tema.

black_flowers

pues eso, que intentando hacer un buffer overflow siguieno el manual de rojodos, me encuentro con esto:
esp:0022334455
pila:
0022334455   0077889900

y la instrucción a ejecutar es un jmp esp (buscado con finjmp en kernel32 o ntdll)
en teoría la siguiente instrucción despues del jmp esp debería de ser la 0077889900, pero en lugar de eso es 0022334455, es decir que en lugar de copiar al eip el valor apuntado por esp me copia directamente en eip el valor de esp.

con call me sucede exactamente lo mismo, no se si sera culpa del compilador, es el masm, aunque yo creo que no es normal que haga eso.

un saludo.

black_flowers

o yo entendidoal o ese no es el funcionamiento esperado no??

AlbertoBSD

Posiblemente, estas entendiendo mal. se debe de escribir el valor que tomara EIP con la direccion del JMP ESP,  cuando el programa vulnerable retorne (ejecute el leave/ret) y ejecute el JMP ESP este saltara ESP en teoria ESP esta apuntando a u shellcode.

Sin embargo esto generalmente ya no funciona normalmente para que funcione tendrias que desactivar muchas cosas.

Si ya comprobaste que en 0022334455 verdaderamente esta el JMP ESP, esto en un sistema con ASLR , generalmente te debe de dar direcciones diferentes de memoria

Saludos
Donaciones
1Coffee1jV4gB5gaXfHgSHDz9xx9QSECVW

black_flowers

oops,  :-Xtienes razón, ha sido un lapsus, por un momento pensé que eip contenía la instrucción a ejecutar cuando lo que contiene es la dirección de la instrucción.