• Eğitim sadece okula gitmek ve bir derece kazanmakla ilgili değildir. Bilginizi genişletmek ve yaşam hakkındaki gerçeği almakla ilgilidir. – Shakuntala Devi

ARM64 Yığın Düzeni - 100x'A' Neden Çökmüyor?

Safiye

Yeni Üyemiz
Bu blogdaki bir ARM64 programındaki arabellek taşması güvenlik açığından yararlanmaya çalışıyorum . Giriş olarak 100*'A' verip programı ARM 32 bit (kanaryalar olmadan) için derlediğimde program çöküyor (dönüş adresinin üzerine yazıldığı için). Ancak giriş olarak 100*'A' verip programı ARM 64 bit (kanaryasız) için derlediğimde program çökmüyor. Neden oluyor? Birisi açıklayabilir mi?

İşte strcpy çağrısından önceki ve sonraki yığının bazı ekran görüntüleri:

32 bit:
gL6yz.png

64 Bit​

EpaXN.png


BTW Kodu bir Intel CPU'da bir Ubuntu VM 64 bit üzerinde çalıştırmak için QEMU kullanıyorum (ayrıca Kali Linux 64 bit ile de denedim).

Teşekkürler.

Kod:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void vulnerable(char* ip) {
char buffer[20];
strcpy(buffer, ip);
}

void win(){
printf("You successfully exploited the buffer overflow\n");
system("/bin/sh");
}

int main(int argc, char** argv) {
if (argc != 2) {
printf("Argument <input>\n");
exit(1);
}
vulnerable(argv[1]);
exit(0);
}
 
Geri
Üst