0Pricing
Ethical Hacking Academy · Pelajaran

Fuzzing untuk Menemukan Crash

Menemukan offset

Fuzzing untuk Menemukan Crash adalah pelajaran Ethical Hacking Academy gratis di CoddyKit. Ini adalah pelajaran 2 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Ethical Hacking Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Ethical Hacking Academy mencakup 4 pelajaran total.

Apa Itu Fuzzing?

Fuzzing adalah pengiriman input yang cacat atau terlalu besar ke program untuk memicu perilaku tak terduga, terutama keruntuhan. Keruntuhan sering menandakan adanya bug korupsi memori.

Untuk luapan buffer, tujuan pertama adalah membuat target mengalami keruntuhan agar kita tahu bahwa luapan memang ada.

Alur Kerja

Alur kerja eksploitasi klasik adalah:

  • Melakukan fuzz untuk membuat program mengalami keruntuhan.
  • Menemukan offset tepat ke alamat pengembalian.
  • Mengendalikan EIP.
  • Mengalihkan eksekusi ke kode shell.

Pelajaran ini membahas dua langkah pertama.

Memasang Debugger

Untuk mengamati keruntuhan, pasang debugger (seperti Immunity Debugger atau x64dbg di Windows, atau GDB di Linux) ke target.

Saat program mengalami keruntuhan, debugger menampilkan keadaan register, terutama EIP, yang menunjukkan apakah kita menimpa alamat pengembalian.

Mengirim Input yang Semakin Besar

Fuzzer sederhana mengirim string yang ukurannya terus bertambah sampai program mengalami keruntuhan. Titik awal yang umum adalah mengirim banyak karakter 'A' (0x41).

Jika EIP menampilkan 41414141 setelah keruntuhan, Anda telah memastikan kendali atas alamat pengembalian.

python -c 'print("A"*2000)' | ./vuln

Mengonfirmasi Keruntuhan

Saat aplikasi mengalami keruntuhan dan EIP sama dengan 41414141, luapan telah mencapai alamat pengembalian yang tersimpan.

Namun, Anda belum mengetahui secara tepat berapa banyak bita yang mendahului EIP. Mengirim bita yang semuanya sama memberi tahu bahwa EIP dapat dikendalikan, bukan letaknya.

Menemukan Offset: Pola Siklik

Untuk menemukan offset yang tepat, kirim pola unik yang tidak berulang, bukan semua 'A'. Setiap jendela 4 bita berbeda, sehingga nilai yang masuk ke EIP menunjukkan offsetnya.

Metasploit menyediakan pattern_create.rb untuk keperluan ini.

msf-pattern_create -l 2000

Membaca Offset

Setelah keruntuhan terjadi dengan pola tersebut, catat nilai di EIP. Masukkan nilai itu ke pattern_offset.rb, dan alat tersebut akan mengembalikan jumlah bita tepat sebelum EIP.

Offset ini adalah ukuran padding sebelum bita alamat pengembalian.

msf-pattern_offset -l 2000 -q 39654138

Memverifikasi Offset

Selalu lakukan verifikasi. Buat input yang terdiri atas offset bita 'A', diikuti empat bita 'B' (0x42). Jika EIP menjadi 42424242, offsetnya tepat.

Konfirmasi ini mencegah Anda membuang waktu berjam-jam untuk men-debug kesalahan selisih beberapa bita nantinya.

"A"*offset + "B"*4   # EIP should become 42424242

Mengidentifikasi ESP

Setelah mengendalikan EIP, catat juga ke mana ESP menunjuk saat keruntuhan terjadi. ESP biasanya menunjuk tepat setelah alamat pengembalian yang ditimpa, ke bagian buffer Anda yang tersisa.

Ruang itulah yang nantinya akan digunakan untuk menempatkan kode shell.

Rangkuman Alat

Alat fuzzing dan pola yang berguna antara lain:

  • Spike dan boofuzz: fuzzer protokol jaringan.
  • pattern_create / pattern_offset: menemukan offset EIP.
  • mona.py di Immunity: mengotomatiskan tugas pola, offset, dan karakter terlarang.
!mona pattern_create 2000

Reproduksibilitas Itu Penting

Keruntuhan yang berguna harus dapat direproduksi. Simpan input persis yang memicunya, lalu jalankan kembali dari keadaan bersih untuk memastikan offsetnya tetap stabil.

Keruntuhan yang tidak konsisten sering berarti bug tersebut bukan luapan stack yang jelas, atau ada kondisi (waktu, panjang, isi) yang berubah di antara eksekusi.

Pemeriksaan Singkat

Ingat kembali alasan pola siklik lebih baik daripada string yang terdiri atas bita identik.

Rangkuman

Sekarang Anda tahu cara menemukan offset keruntuhan:

  • Melakukan fuzz dengan input yang terus membesar untuk memicu keruntuhan; konfirmasi dengan 41414141 di EIP.
  • Gunakan pola siklik dengan pattern_create / pattern_offset untuk menemukan offset tepat.
  • Verifikasi dengan padding + empat bita 'B' (42424242).
  • Catat ke mana ESP menunjuk untuk penempatan kode shell nantinya.

Berikutnya Anda akan mengendalikan EIP sepenuhnya dan mengalihkan eksekusi.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Fuzzing untuk Menemukan Crash” gratis?

Ya — teks lengkap “Fuzzing untuk Menemukan Crash” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Ethical Hacking Academy, upgrade ke CoddyKit PRO. Kursus Ethical Hacking Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Fuzzing untuk Menemukan Crash”?

Menemukan offset Kamu berlatih Ethical Hacking Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Ethical Hacking Academy?

Tidak diperlukan pengalaman sebelumnya. Ethical Hacking Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 2 dari 4.

Berapa lama pelajaran “Fuzzing untuk Menemukan Crash” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Ethical Hacking Academy ini?

Ya. Setiap pelajaran Ethical Hacking Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Memori dan Stack
  2. Fuzzing untuk Menemukan Crash
  3. Mengendalikan EIP
  4. Shellcode dan Eksploitasi
← Kembali ke Ethical Hacking Academy