Luapan Buffer Tumpukan
Pahami tata letak tumpukan, luapan EIP/RIP, dan tulis eksploitasi yang berfungsi untuk biner C yang rentan.
Luapan Buffer Tumpukan adalah pelajaran Cyber Security Academy gratis di CoddyKit. Ini adalah pelajaran 1 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 Cyber Security Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Cyber Security Academy mencakup 4 pelajaran total.
Apa itu Luapan Penyangga?
Luapan penyangga terjadi ketika lebih banyak data ditulis ke penyangga daripada kapasitasnya. Data berlebih menimpa memori di sebelahnya, yang berpotensi merusak struktur kendali dan mengalihkan eksekusi program.
Tata Letak Memori Tumpukan
Tumpukan panggilan menyimpan: variabel lokal (penyangga), penunjuk bingkai tersimpan (SFP), dan alamat pengembalian (RIP/EIP) — tempat eksekusi berlanjut setelah fungsi mengembalikan kendali. Luapan penyangga lokal dapat menimpa alamat pengembalian.
Perusakan Tumpukan Klasik
Jika program memanggil gets() atau strcpy() tanpa pemeriksaan panjang, penyerang dapat memberikan cukup banyak byte untuk memenuhi penyangga dan menimpa alamat pengembalian dengan alamat kode shell atau rangkaian instruksi yang berguna.
// Vulnerable C code:
void vuln() {
char buf[64];
gets(buf); // No bounds checking!
}Menemukan Jarak
Tentukan berapa banyak byte yang mencapai alamat pengembalian menggunakan pembuatan pola:
# Generate a cyclic pattern:
python3 -c "from pwn import *; print(cyclic(200))" | ./vuln
# After crash, find offset:
python3 -c "from pwn import *; print(cyclic_find(0x61616166))"Perlindungan: Nilai Penjaga Tumpukan
Nilai penjaga tumpukan adalah nilai acak yang ditempatkan di antara variabel lokal dan alamat pengembalian tersimpan. Sebelum mengembalikan kendali, nilai penjaga diperiksa — jika tertimpa, program dihentikan. Nilai ini harus dilewati untuk eksploitasi luapan klasik.
Perlindungan: ASLR
Pengacakan Tata Letak Ruang Alamat (ASLR) mengacak alamat dasar tumpukan, memori dinamis, dan pustaka pada setiap eksekusi. Tanpa kebocoran alamat terkini, menebak lokasi untuk melakukan lompatan hampir mustahil pada sistem 64-bit.
Perlindungan: NX/DEP
NX (Tanpa Eksekusi) / DEP (Pencegahan Eksekusi Data) menandai tumpukan sebagai tidak dapat dieksekusi. Kode shell yang disisipkan ke dalam penyangga tidak dapat dieksekusi secara langsung. Hal ini memaksa penyerang menggunakan Pemrograman Berorientasi Pengembalian (ROP).
Membocorkan Alamat
Untuk mengatasi ASLR, penyerang memerlukan kebocoran informasi: kerentanan string format, pembacaan berlebih pada memori dinamis (seperti Heartbleed), atau penunjuk yang dapat dibaca dalam fungsi yang dieksploitasi. Satu alamat yang bocor mengungkap offset dan memungkinkan alamat lainnya dihitung.
Menulis Eksploitasi Dasar
Luapan tumpukan 32-bit dasar tanpa perlindungan:
# Python exploit skeleton (pwntools):
from pwn import *
p = process("./vuln")
offset = 76
shellcode = asm(shellcraft.sh())
payload = shellcode + b"A" * (offset - len(shellcode)) + p32(stack_addr)
p.sendline(payload)
p.interactive()Teknik ret2libc
ret2libc melewati NX dengan kembali ke fungsi libc (seperti system()), bukan menggunakan kode shell. Penyerang menimpa alamat pengembalian dengan alamat system dan meneruskan "/bin/sh" sebagai argumen.
Alat untuk Mengembangkan Eksploitasi
Alat penting:
- pwntools — pustaka eksploitasi Python
- GDB + pwndbg/peda — alat penelusuran kesalahan dengan pembantu eksploitasi
- checksec — menampilkan perlindungan biner
- ROPgadget / ropper — mencari rantai ROP
checksec --file=./vulnPemeriksaan Singkat: Luapan Tumpukan
Mitigasi apa yang menempatkan nilai acak di antara variabel lokal dan alamat pengembalian tersimpan, lalu mengakhiri program jika nilai tersebut ditimpa?
Rangkuman Pelajaran
Luapan penyangga tumpukan menimpa alamat pengembalian dengan mengisi penyangga melewati batasnya. Perlindungannya mencakup kanari tumpukan (mendeteksi penimpaan), ASLR (mengacak alamat), dan NX/DEP (tumpukan yang tidak dapat dieksekusi). ret2libc melewati NX. Kebocoran informasi mengatasi ASLR. pwntools menyederhanakan pengembangan eksploitasi.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Luapan Buffer Tumpukan” gratis?
Ya — teks lengkap “Luapan Buffer Tumpukan” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Cyber Security Academy, upgrade ke CoddyKit PRO. Kursus Cyber Security Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Luapan Buffer Tumpukan”?
Pahami tata letak tumpukan, luapan EIP/RIP, dan tulis eksploitasi yang berfungsi untuk biner C yang rentan. Kamu berlatih Cyber Security 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 Cyber Security Academy?
Tidak diperlukan pengalaman sebelumnya. Cyber Security 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 1 dari 4.
Berapa lama pelajaran “Luapan Buffer Tumpukan” 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 Cyber Security Academy ini?
Ya. Setiap pelajaran Cyber Security 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
- Luapan Buffer Tumpukan
- Pemrograman Berorientasi Pengembalian (ROP)
- Kerentanan String Format
- Eksploitasi Heap: Use-After-Free dan Penyemprotan Heap