Próbuję przekazać argument wiersza poleceń do programu „notesearch.c” w celu przepełnienia bufora i przepisania adresu powrotu na 0x00007fff9e89b2e7 w formacie little endian za pomocą polecenia:
./notesearch $ (perl -e "print" xe7xb2x89x9exffx7fx00x00 "x 20 ”)
Jednak wartość przechowywana w argv [1] to:
0x7fff9cd441cc: 0xe7 0xb2 0x89 0x9e 0xff 0x7f 0xe7 0xb2
0x7fff9cd441d4: 0x89 0x9e 0xff 0x7f 0xe7 0xb2 0x89 0x9e
0x7fff9cd441dc: 0xff 0x7f 0xe7 0xb2 0x89 0x9e 0xff 0x7f ......
Zera nie są przechowywane! Tak więc rzeczywisty 64-bitowy nadpisany adres zwrotny może być dowolną permutacją niezerowych cyfr szesnastkowych. Jak przechowywać również zera?
Odpowiedzi:
2 dla odpowiedzi № 1W systemie uniksopodobnym nie jest możliwe przekazanie argumentów zawierających