Autor
|
Tema: problema ret2libc sacando direccion d memoria system() (Leído 4,932 veces)
|
rmdma()
Desconectado
Mensajes: 17
mov eax,0x69
|
buenas xaki
estoy tratando d explotar un programilla, peo al sacar la direccion de system, me duelve una direccion de 3bytes , system()->0x168950 , el problema es k no me accede a esa direccion por que supongo que correra parte de otra direccion pa llenar los 4 bytes, nose haber si alguien puede echarme un cable!
|
|
|
En línea
|
|
|
|
Ivanchuk
Desconectado
Mensajes: 469
LLVM
|
No podes meter bytes nulos? La pila no es ejecutable ? Si no podes pasar bytes nulos podes intentar buscando pedazos de codigos, en las libs o tu modulo, que te sean utiles para formar la direccion de system que buscas a partir de bytes no nulos.
Estas en windows o linux?
|
|
|
En línea
|
|
|
|
rmdma()
Desconectado
Mensajes: 17
mov eax,0x69
|
estoy trabajando bajo mac pero tngo una maquina virtual con ubuntu 11, como puedo hacer para cambiar byte nulos?
|
|
|
En línea
|
|
|
|
rmdma()
Desconectado
Mensajes: 17
mov eax,0x69
|
entonces el problema es la direccion corta o los bytes nulos o las 2?
grcias x kontestar
|
|
|
En línea
|
|
|
|
Ivanchuk
Desconectado
Mensajes: 469
LLVM
|
El hecho que haya bytes nulos te complica la vida, si es que es una cadena que le estas pasando. La direccion es corta porque debe ser la que va directamente hacia libc, a mi me pasa lo mismo en linux. Danos mas detalles, que programa intentas explotar? Una solucion para tener una direccion sin bytes nulos seria usar la PLT del programa vulnerable, pero la entrada de system no la vas a tener si no es usada por el programa. Si es algo que escribiste vos para testear el ret2libc podes probar de agregarla a mano: if (argc < 0) system("no se va a ejecutar");
Y ahi te deberia aparecer. En gdb la sacas con "x system" y te deberia dar una direccion dentro del espacio del programa vulnerable. Proba asi, sino va a ser mas dificil explotarlo. Saludos.
|
|
« Última modificación: 12 Febrero 2012, 15:51 pm por Ivanchuk »
|
En línea
|
|
|
|
rmdma()
Desconectado
Mensajes: 17
mov eax,0x69
|
#include <stdio.h> #include <string.h>
fvuln(char *temp1, char *temp2) { char name[512];
strcpy(name, temp2); printf("Hello, %s %s\n", temp1, name); }
int main(int argc, char *argv[]) { fvuln(argv[1],argv[2]); printf("Bye %s %s\n", argv[1], argv[2]);
return 0; } el programa es este en concreto el q trato de explotar, estoy siguiendo un paper de los SET, te voy a dejar el link del paper http://www.set-ezine.org/ezines/set/37/0x05.txt
|
|
« Última modificación: 12 Febrero 2012, 16:08 pm por rtoffana »
|
En línea
|
|
|
|
Ivanchuk
Desconectado
Mensajes: 469
LLVM
|
Ah, bueno como te decia agregale el if y busca la dir de system en la plt: #include <stdio.h> #include <string.h> fvuln(char *temp1, char *temp2) { char name[512]; strcpy(name, temp2); printf("Hello, %s %s\n", temp1, name); } int main(int argc, char *argv[]) { fvuln(argv[1],argv[2]); printf("Bye %s %s\n", argv[1], argv[2]); if (argc < 0) system(""); return 0; }
Y en gdb la sacas asi: p 'system@plt'
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
imprimir los bits que hay en una direccion de memoria
« 1 2 »
ASM
|
lapras
|
11
|
10,794
|
4 Diciembre 2009, 16:26 pm
por Yurix
|
|
|
LLamar a una direccion de memoria desde otro programa
Ingeniería Inversa
|
s_azazel
|
9
|
5,548
|
31 Octubre 2010, 19:19 pm
por [Zero]
|
|
|
Darle la vuelta a una direccion de memoria.
Análisis y Diseño de Malware
|
0xDani
|
2
|
2,885
|
2 Diciembre 2012, 21:02 pm
por 0xDani
|
|
|
Problema representación dirección de memoria en C.
Programación C/C++
|
lanun
|
6
|
2,812
|
28 Febrero 2014, 19:44 pm
por lanun
|
|
|
Inesperado EIP ret2libc
Bugs y Exploits
|
Lodos76
|
2
|
3,452
|
1 Agosto 2014, 15:40 pm
por Lodos76
|
|