przepełnienei bufora na stosie - prosty przyklad

0
 
#include <stdio.h>
#include <stdlib.h>
void overflow() {
   char tab[4];
   gets(tab);
}
int main () {
while(1){overflow();}
return 0;
}

Chcialbym wrzucic na stos 1 i wywolac exit.

Problem polega na tym ze gets zamienia input wedlug ascii. Np jak wpisuje 0000 to na stosie pojawia sie 0x30303030. Jak wprowadzic shellcode przez ten input ?

1

Musisz po prostu wysłać do programu dane binarne, a nie przez klawiaturę. Najprościej napisać skrypt / program który dopina się do STDIN tego twojego programu i wysyła mu bajty jakie chcesz na wejście. Możesz spróbować użyc https://github.com/Gallopsled/pwntools do tego, masz tam dość sporo gotowych rozwiązań i ułatwień

0

Dzięki ;)

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.