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

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


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

Desconectado Desconectado

Mensajes: 49


Ver Perfil
Explicación de buffer overflow
« en: 23 Febrero 2024, 11:43 am »

He estado hablando con ChatGPT. Para entender un Buffer Overflow. Mi pregunta es si este código es correcto, y qué son los caracteres sueltos que hardcodea en hexadecimal.

Esto decía el bicharrak.


Mis disculpas por la confusión. Aquí tienes un ejemplo de un programa vulnerable en C para Windows que sufre de un desbordamiento de búfer y su correspondiente exploit que ejecutará una shell como payload:

Programa vulnerable (vulnerable.c):

Código
  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. void funcion_vulnerable(const char *entrada) {
  5.    char buffer[10];
  6.    strcpy(buffer, entrada);
  7.    printf("Buffer: %s\n", buffer);
  8. }
  9.  
  10. int main(int argc, char *argv[]) {
  11.    if (argc != 2) {
  12.        printf("Uso: %s <entrada>\n", argv[0]);
  13.        return 1;
  14.    }
  15.  
  16.    funcion_vulnerable(argv[1]);
  17.  
  18.    return 0;
  19. }
  20.  

Exploit (exploit.c):

Código
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <windows.h>
  4.  
  5. // Función maliciosa que se ejecutará
  6. void codigo_malicioso() {
  7.    // Ejecutar CMD.exe
  8.    system("cmd.exe");
  9. }
  10.  
  11. int main() {
  12.    // Crear un payload que contiene el código malicioso
  13.    char payload[100];
  14.    memset(payload, 'A', sizeof(payload)); // Llenar el payload con caracteres 'A'
  15.  
  16.    // Sobrescribir la dirección de retorno con la dirección de la función maliciosa
  17.    // Suponiendo que la dirección de la función maliciosa es 0x12345678
  18.    memcpy(payload + 90, "\x78\x56\x34\x12", 4); // Little-endian
  19.  
  20.    // Ejecutar el programa vulnerable con el payload como entrada
  21.    // Suponiendo que el programa vulnerable se llama "vulnerable.exe"
  22.    // y está en el mismo directorio que este exploit
  23.    char comando[200];
  24.    sprintf(comando, "vulnerable.exe %s", payload);
  25.    system(comando);
  26.  
  27.    return 0;
  28. }
  29.  

Para compilar ambos programas en Windows, puedes utilizar un compilador de C como MinGW. Por ejemplo, desde la línea de comandos de Windows:

```
gcc vulnerable.c -o vulnerable.exe
gcc exploit.c -o exploit.exe
```

Luego, puedes ejecutar el exploit para aprovechar la vulnerabilidad en el programa vulnerable y ejecutar una shell:

```
exploit.exe
```
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Buffer Overflow en una pagina web
Nivel Web
mordiskos 1 3,465 Último mensaje 9 Marzo 2006, 00:45 am
por ANELKAOS
buffer overflow
Ingeniería Inversa
Meg 2 5,842 Último mensaje 6 Febrero 2009, 11:20 am
por Shaddy
Problema, return address buffer overflow (Cómo calcular la dirección del buffer?
Bugs y Exploits
Debci 6 7,421 Último mensaje 7 Abril 2014, 20:00 pm
por soez
Buffer Overflow
Bugs y Exploits
vivianfes 0 2,019 Último mensaje 23 Abril 2019, 23:58 pm
por vivianfes
Buffer Overflow en web
Bugs y Exploits
seus 3 3,864 Último mensaje 29 Enero 2020, 22:18 pm
por WHK
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines