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:
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);
}
İşte strcpy çağrısından önceki ve sonraki yığının bazı ekran görüntüleri:
32 bit:
64 Bit
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);
}