CodeBlanks Logo Icon CodeBlanks

Özet - Güvenlik

Buffer overflow, canary ve ASLR'yi birleştirerek güvenli bir giriş fonksiyonu yazarsın.

Özet - Güvenlik

Bu grupta C programlarının sık yaptığı beş güvenlik hatasını ve karşılığı gelen korumaları gördün: buffer overflow, stack canary, ASLR, format string ve güvenli fonksiyonlar.

Buffer overflow yığın taşmasıdır; canary bunu yakalar. ASLR bellek bölgelerini rastgeleleştirir; format string açığı printf(input) kullanımından doğar. Güvenli alternatifler olan fgets ve strncpy taşmayı önler. Şimdi beş kavramı birleştiren bir mini görev yazacaksın; her birinin adını ve çözümünü ekranda göreceksin.

Uygulama Güvenlik kavramlarını yazdır

void print_security(const char *topic, const char *fix) fonksiyonunu tanımla; gövdesi printf("%s -> %s\n", topic, fix); olsun. main içinde beş konu için çağır: ("overflow", "bounds"), ("canary", "ssp"), ("aslr", "randomize"), ("format_string", "%s"), ("safe", "fgets/strncpy").

Başlangıç kodu

main.c
#include <stdio.h>

// print_security fonksiyonunu tanımla
// beş konuyu yazdır: overflow, canary, aslr, format_string, safe

int main(void) {
    return 0;
}

Örnek çözüm

main.c
#include <stdio.h>

void print_security(const char *topic, const char *fix) {
    printf("%s -> %s\n", topic, fix);
}

int main(void) {
    print_security("overflow", "bounds");
    print_security("canary", "ssp");
    print_security("aslr", "randomize");
    print_security("format_string", "%s");
    print_security("safe", "fgets/strncpy");
    return 0;
}

Beklenen çıktı

overflow -> bounds
canary -> ssp
aslr -> randomize
format_string -> %s
safe -> fgets/strncpy

Güvenlik temelleri tamam

Tebrikler! C güvenlik temellerini bitirdin. Artık buffer overflow, canary, ASLR, format string açığı ve güvenli fonksiyonları biliyorsun. Bir C programı yazarken bu beş kavramı birlikte düşünmelisin.

Savunma katmanlıdır: güvenli fonksiyonlar açık yaratmaz, canary açık yakalanırsa alarm verir, ASLR saldırganın hedef adresini gizler. Hiçbir koruma tek başına yeterli değildir; birlikte kullanılırlar. Bu, CodeBlanks C kursunun uzman seviye son grubuydu. Öğrendiklerini gerçek projelerde uygulayabilirsin.

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Bir programın taşmayı önlemek için hangi fonksiyonu kullanmalıdır?

  • strcpy
  • printf
  • gets
  • strncpy Doğru cevap

Açıklama: strncpy bir boyut parametresi alır ve taşmayı önler.

2 Beş güvenlik kavramını eşle

Kavram Anlamı
overflow Taşma
canary Yığın alarmı
aslr Adres rastgeleştirme
format_string Biçim dizesi açığı
safe Sınırlı fonksiyonlar

Uzman bölümündeki tüm dersler