Armin
Armin
Full Stack Developer System Administrator SEO Specialist Content Writer
Armin

Blog

Implementasi buffer overflow

Implementasi buffer overflow

PRELUDE
-------
Pengertian buffer overflow:
kita akan manipulasi register EIP dengan program yang kita buat
melalui cara buffering terhadap kapasitas memory itu sendiri
EIP adalah register di mesin 32bit yang berfungsi
menyimpan alamat memory yang akan menjalankan instruksi selanjutnya.START
-----
di sini saya mempunyai source exploit dengan shellcodenyaschumbag@ngelux:~$ cat ngenes.c
#includechar shellcode[] = "\xbb\x14\x00\x00\x00"
                "\xb8\x01\x00\x00\x00"
             "\xcd\x80";int main()
{
 int *ret;
 ret = (int *)& ret +2;
 (*ret) = (int)shellcode;
}
schumbag@ngelux:~$ lalu kita compile dengan opsi
gcc -ggdb -mpreferred-stack-boundary=2 -o ngenes ngenes.ckemudian run
schumbag@ngelux:~$ ./ngenes
schumbag@ngelux:~$ masih tak terjadi apa-apa,coba tambahkan perintah....
schumbag@ngelux:~$ echo $?
20
schumbag@ngelux:~$~sedikit saya jelaskan mengenai struktur manipulasi terhadap memorynya
 pertama kita akan melakukan eksekusi file untuk overwrite hingga 12byte di register RET~lalu melakukan hal yang sama untuk 4bytes di register EIP
~dan kembali ke register RET~untuk kemudian eksekusi function hingga over yang memberi
 nilai baru di RET untuk instruksi selanjutnya....kira-kira seperti inilah gambaran simpelnya :  ======
 | RET  |
  =======
 |EBP-old|
  =======
 |Buffer[]|
 | 8 Bytes|        <===== ESP
 ==========di balik fungsi tersebut terdapat space 20bit yang di alokasikan ke RET
dan dan di stack ketika running EBP-old instruction pointer yang akan di insert di function tersebut.sekarang kita akan debugging menggunakan gdb
schumbag@ngelux:~$ gdb ./ngenes
GNU gdb (GDB) 7.2-ubuntu
Copyright (C) 2010 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later 
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "i686-linux-gnu".
For bug reporting instructions, please see:
...
Reading symbols from /home/schumbag/ngenes...done.
(gdb) disas main
Dump of assembler code for function main:
   0x08048394 <+0>: push                                   

Add Comment