ako ste doupravovali exploit.c?
Zatial nijako. Neviem, ci som to spravne pochopil, ale pouzitim prikazov #sysctl -w kernel.randomize_va_space=0 a gcc -fno-stack-protector -o stack stack.c, by sa aj v pripade pretecenia zasobnika malo toto pretecenie ignorovat. Prosim opravte ma, ak sa mylim ().
Nemyslim si, ze to zbehne bez upravy. Pretoze neupraveny exploit.c spravi to, ze pole buffer naplni NOP instrukciami a to cele zapise do suboru badfile. Potom subor stack.c nacita 517 NOP instrukcii a prekopiruje ich do pola buffer[12], takze pretecie pole s 502 NOP instrukciami. Takze si myslim, ze nie je sanca aby sa spustil admin shell.
V subore exploit.c velkost pola shellcode je 25 (podla vyrazu sizeof(shellcode)*sizeof(char), kde velkost char je 1). Takze uprava by mohla vyzerat nasledovne: v subore exploit.c do buffera nasukat 12b trashu a za nim 25b pole shellcode. Takze som pouzil
memcpy(buffer, "123456789012", 12);
memcpy(buffer+12, shellcode, strlen(shellcode)+1);
Neviem presne ako to je s ukoncovacimi znakmi ale vypis je nasledovny
1234567890121�Ph//shh/bin��PS�ᙰ
Tak potom spustim ./stack a vypise segmentation fault.
Takze vobec netusim ci som sa uberal spravnym smerom ...
Ako to pretecenie buffra vlastne funguje? Je zarucene, ze data, ktore pretecu sa vykonaju? A kedy?
EDIT: Myslim, ze vsetky odpovede sa nachadzaju tu:
http://www.cs.wright.edu/people/faculty/tkprasad/courses/cs781/alephOne.html