Apa Itu Buffer Overflow? How To Do It?

Salah satu kerentanan yang krusial pada aplikasi perangkat lunak
buffer-overflow-attacks

Halo, Sobat Siber 😊

Kali ini admin akan menjelaskan tentang serangan kerentanan Buffer Overflow. Langsung aja simak penjelasan dibawah ini!

Pengertian Buffer

Buffer adalah area memori yang menyimpan data ketika mereka sedang dipindahkan antara dua device atau antara device dan aplikasi.


Buffer dilakukan untuk 3 hal

  1. Untuk men-cope dengan kesalahan yang terjadi karena perbedaan kecepatan antara produsen dengan konsumen dari sebuah stream data.
  2. Untuk menyesuaikan device-device yang mempunyai perbedaan dalam ukuran transfer data, dimana buffer dipakai untuk fragmentasi dan pengaturan kembali pesan yang diterima.
  3. Untuk mendukung copy semantics untuk aplikasi I/O

Pengertian Overflow

Over adalah beban yang berlebih atau suatu data yang melebihi kapasitas yang akan ditempatinya. Sedangkan flow adalah aliran. Jadi, Overflow adalah aliran yang berlebihan / aliran data yang melebihi kapasitas tempat yang akan dijadikan tempat data tersebut.

 

Kesimpulannya, Buffer Overflow adalah area memori pemindahan data antara device yang berbeda dan data yang dialirkan melebihi kapasitas memori pemindahannya.

Implementasi

#include

#include

int main(void){

    char buff[15];

    int pass = 0;

    printf(“\n Enter the password : \n”);

    gets(buff);

    if(strcmp(buff, “sekolahsiber”)) {

         printf (“\n Wrong Password \n”);

    }else{

        printf (“\n Correct Password \n”);

        pass = 1;

    }

    if(pass){

        printf (“\n Root privileges given to the user \n”);

    }

 

    return 0;

}

Penjelasan

Program akan mengoutputkan “Root privileges” apabila user berhasil menginputkan password yang benar, dalam hal ini “sekolahsiber”.
 
Password disimpan dalam sebuah variable array of char (string). Buffer Overflow akan terjadi apabila buffer (dalam hal ini, variable buff dengan size 15) kita isikan dengan data lebih dari 15.
 
Semisal kita inputkan sebuah string dengan Panjang 20 karakter, maka akan menghasilkan output dibawah ini:

Dapat kita lihat bahwa pada if condition pertama, bernilai true (fungsi strcmp apabila sama akan mengembalikan nilai 0), sehingga mengoutputkan “Wrong Password”. Namun, nilai dari pass berubah tidak lagi menjadi 0.

Gambar diatas adalah hasil Ketika saya mencoba untuk mengoutputkan nilai dari variable pass.

 

Hal yang terjadi pada studi kasus diatas yaitu, input dari user yang berlebih tadi akan mempengaruhi nilai dari address setelah variable buff (yang merupakan variable dengan size fixed dan menyimpan 15 buah slot char), dalam hal ini yaitu variable pass.

Terima kasih sudah membaca, semoga harimu bahagia

2 Comments.

Leave a Reply

Your email address will not be published. Required fields are marked *

Terima kasih sudah membaca, semoga harimu bahagia

×

Hello!

Silahkan bergabung dengan Komunitas Sekolah Siber

× Bantuan