Wcześniej skupiliśmy się na eksploatacji 32-bitowych plików binarnych, ale w tym rozdziale skupiamy się na eksploatacji 64-bitowych plików binarnych. Pierwszą różnicą, którą możesz zauważyć, jest to, że nazwy rejestrów zaczynają się od R. Aby wykorzystać lukę w zabezpieczeniach związaną z przepełnieniem bufora, musimy nadpisać RIP. Podczas uruchamiania gdb otwórz nowe okno i połącz się z podatnym serwerem TCP, a następnie wyślij 200 bajtów za pomocą polecenia wzorca cyklicznego Pwntools:
UWAGA: Jeśli polecenie cykliczne nie zostanie znalezione, zainstaluj Pwntools za pomocą sudo, postępując zgodnie z przewodnikiem instalacji.
W oknie, w którym działa gdb, powinieneś zobaczyć naruszenie segmentacji. Użyjmy wbudowanego polecenia wyszukiwania wzorców GEF, aby zobaczyć, ile bajtów należy zapisać przed nadpisaniem RIP:
UWAGA: Po awarii programu pamiętaj, aby uruchomić killall -9 vuln po wyjściu z gdb, a następnie ponownie uruchomić gdb z tymi samymi parametrami.
Zacznijmy pisać nasz exploit z wiedzą, którą mamy do tej pory:
Zapisz i uruchom skrypt Pythona, a w oknie gdb powinieneś móc nadpisać RIP czterema literami B: