Cette page vous donne les différences entre la révision choisie et la version actuelle de la page.
|
hackingweek_2014:exploit:exploit3 [2014/03/03 01:25] ganapati créée |
hackingweek_2014:exploit:exploit3 [2017/04/09 15:33] (Version actuelle) |
||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| - | __Buffer overflow de base avec un array de 64.__ | + | Source : |
| + | <code C> | ||
| + | #include <string.h> | ||
| + | int main (int argc, char *argv[]) { | ||
| + | char buffer[64]; | ||
| + | if (argc > 1) | ||
| + | strcpy (buffer, argv[1]); | ||
| + | return 0; | ||
| + | } | ||
| + | </code> | ||
| + | La vulnérabilité se trouve au niveau de l'appel à la fonction strcpy() qui copie l'argument d'entrée dans un tableau de 64. | ||
| On commence par exporter dans une variable d'environnement le shellcode (/bin/sh pour linux x64) avec quelques NOPs (pour le plaisir) : | On commence par exporter dans une variable d'environnement le shellcode (/bin/sh pour linux x64) avec quelques NOPs (pour le plaisir) : | ||
| Ligne 24: | Ligne 34: | ||
| Code source de getenv (pour récupérer l'adresse du shellcode en environnement) : | Code source de getenv (pour récupérer l'adresse du shellcode en environnement) : | ||
| - | #include <stdio.h> | + | #include <stdio.h> |
| - | #include <stdlib.h> | + | #include <stdlib.h> |
| - | #include <string.h> | + | #include <string.h> |
| int main(int argc, char **argv){ | int main(int argc, char **argv){ | ||
| char *ptr; | char *ptr; | ||