Toteuta seuraavat ohjelmat C/C++-kielellä. Käännä ja suorita ohjelmat. Kerro, mitä tapahtuu ja miksi.

Vinkkejä saat materiaalista aliotsikon puskuriylivuodot alta.


T1: Kirjoita ohjelma, joka saa aiheuttaa taulukon ylivuodon. (0,5 pistettä)

T2: Kirjoita ohjelma, joka aiheuttaa yhden yli -vuodon (off-by-one). (0,5 pistettä)

T3: Kirjoita ohjelma, joka aiheuttaa kasan ylivuodon (heap overflow). (0,5 pistettä)

T4: Kirjoita ohjelma, joka saa aikaan funktion ylivuodon (function pointer). (0,5 pistettä)

T5: Kirjoita ohjelma, jossa on printf-haavoittuvuus. (0,5 pistettä)

T6: Piirrä kuva, josta selviää, miten ohjelman kutsupino (stack / call stack)  toimii. (1,5 pistettä)

T7: Piirrä kuva tehtävän 1 puskuriylivuotohaavoittuvuudesta. Kuvasta tulee selvitä, miten suoritus siirtyy haitalliseen koodiin. (2 pistettä)