Disusun Oleh:
// buffer_one[8] , buffer_two[8]
Sebelumnya kita mengassign size sebesar sizeof(char) * 8 ke masing masing buffer_one dan
buffer_two.
Pada hasil exsekusi program seperti gambar diatas , pertama saya eksekusi dengan passing array
of char yang lebih kecil dari memory yang di assign pada buffer_two (argv 1 yang akan di copy
ke buffer_two).Oke kita melakukan copy sebanyak 1*len(argv1) ke buffer_two , karean memory
masih lebih kecil dari ukuran yang kita assign , maka program masih berjalan normal.
Selanjutnya pada eksekusi kedua , saya melakukan passing ke argv 1 dengan ukuran array of
char yang lebih besar dari buffer_two , maka disinilah kita dapat melihat buffer overflow ,
dimana ukuran memory array of char yang saya copy ke variable memenuhi kapasitas yang di
assign , sehingga ukuran maksimal akan di tamping ke buffer_two (8 bytes) , selebih nya ke
buffer_one dan sisanya di tamping di value.
//auth_overflow
• Dengan Inputan wajar
Dari hasil eksekusi file program auth_overflow (Stack base buffer overflow) diatas , kita
mendapatkan output masih sesuai dengan ekspektasi kita.ketika argv 1 yang di passing ada
diantar briiling atau outgrade maka output “Access Granted” dan selain itu “Access Denied”
Nah lain jika kita passing argv yang melebih memory , maka kita akan mendapatai output
“Access Granted” tentu ini akan menjadi exploitasi untuk attacker
Nah untuk overflow sselanjutnya , yaitu stack based heap overflow , kita dapat melihat diatas
kalua di jalankan dengan normal maka haislnya sesuai dengan ekspektasi kita , namun
bagaimana jika yang di passing melebihi buffer variable yang di assign ?
Maka exploitasi stack based heap overflow akan menjadi kerentanan program kita
Jawab :
4. Bagaimanacara anda menerapkan solusi dari masing-masing program (overflow_example.c,
auth_overflow.c, dan heap_overflow.c)?
Jawab :
Untuk masing masing kerentanan exlploitasi overflow , stack based buffer overflow , stack based
heap overflow pertama melakukan Analisa variable , algoritma mana yang menyebabkan
kerentanan.misal pada overflow_example kita hanya mengatasi peng-assign an memory pada variable
buffer_one dan buffer_two agar menyesuaikan array of char yang di passing ke argv1 jadi tidak aka
nada kerentanan disini , dan untuk kasus stack based buffer overflow (auth_overflow) , kita
melakukan pengecekan pada string hanya antara (brilling dan outgrade) bila dalam test case normal
ini tidak ada masalah , permasalahan jiga argv1 di passing dengan array of char melebihi memory
buffer , dari sini saya meninjau ukuran argv 1 yang di passing , jika lebih kecil dari ukuran buffer
dan berada diantara (brilling atau outgrade) maka return true , lain dari itu return false , damn
berhasil.
Last , Analisa sama dengan case yang lain , disini kita memesan memory secara dynamis (lebih
diuntungkan) , maka memory yang di pesan kita sesuaikan dengan argument 1 yang di passing dan
damn , berhasil.