0Pricing
Cyber Security Academy · Pelajaran

Dasar-Dasar Reversing dan Pwn

Pengantar rekayasa balik dan eksploitasi biner.

Dasar-Dasar Reversing dan Pwn adalah pelajaran Cyber Security Academy gratis di CoddyKit. Ini adalah pelajaran 3 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.

Sekilas tentang Rekayasa Balik dan Eksploitasi Biner

Dua kategori CTF yang berkaitan erat berhubungan dengan program terkompilasi:

  • Rekayasa balik (rev) — Anda menganalisis biner untuk memahami cara kerjanya, sering kali guna menemukan pemeriksaan kata sandi atau logika tersembunyi yang mencetak bendera.
  • Eksploitasi biner — Anda menemukan bug keamanan memori dalam biner yang sedang berjalan dan mengeksploitasinya untuk mengambil alih eksekusi, sering kali guna memulai terminal pada layanan jarak jauh yang menyimpan bendera.

Rekayasa balik berfokus pada pemahaman; eksploitasi biner berfokus pada pembobolan. Keduanya memerlukan penguasaan konsep tingkat rendah.

Pandangan Pertama pada Biner

Jangan pernah membuka biner secara membabi buta di pembongkar kode. Lakukan triase terlebih dahulu dengan alat baris perintah yang cepat untuk mengetahui jenis, arsitektur, dan teks yang terlihat di dalamnya.

# Identify file type and architecture
file ./challenge

# Pull human-readable strings (flags are sometimes left in plaintext)
strings ./challenge

# Check which security mitigations are enabled
checksec --file=./challenge

Analisis Statis dan Dinamis

Anda menganalisis biner dengan dua cara yang saling melengkapi:

  • Analisis statis — baca kode tanpa menjalankannya, menggunakan pembongkar kode atau dekompiler seperti Ghidra atau tampilan pembongkar kode. Anda dapat melihat seluruh alur kendali, tetapi harus menyimpulkan nilai saat eksekusi.
  • Analisis dinamis — jalankan program di bawah pengawakutu seperti GDB dan amati nilai nyata dalam register serta memori. Anda dapat melihat persis apa yang terjadi, tetapi hanya di sepanjang jalur yang Anda jalankan.

Pemain yang terampil berpindah di antara keduanya: membaca secara statis untuk membentuk teori, lalu mengonfirmasinya secara dinamis dengan menelusuri eksekusi langkah demi langkah.

Membaca Kode Rakitan

Untuk melakukan rekayasa balik, Anda membaca bahasa rakitan. Anda tidak perlu menulisnya dengan lancar, tetapi harus mengenali pola-pola berikut:

  • cmp / test yang diikuti lompatan (je, jne) adalah perbandingan dan percabangan — sering kali merupakan pemeriksaan kata sandi.
  • call memanggil sebuah fungsi; argumennya telah ditempatkan di register atau tumpukan sesaat sebelumnya.
  • mov memindahkan data di antara register, memori, dan konstanta.

Ketika menemukan cmp terhadap masukan Anda yang diikuti percabangan menuju pesan keberhasilan, Anda telah menemukan pemeriksaannya. Sekarang temukan atau lewati nilai yang diharapkan.

Dekompiler Mempercepat Pekerjaan Anda

Dekompiler modern mengubah bahasa rakitan kembali menjadi C perkiraan, yang jauh lebih cepat dibaca daripada instruksi mentah. Pemeriksaan kata sandi hasil dekompilasi mungkin terlihat seperti ini:

// Decompiler output (approximate)
if (strcmp(user_input, "s3cr3t_p4ss") == 0) {
    puts("Correct! Here is your flag:");
    print_flag();
} else {
    puts("Wrong.");
}

Bagaimana Korupsi Memori Dimulai

Tantangan eksploitasi biner memanfaatkan program yang membaca masukan ke dalam penyangga berukuran tetap tanpa memeriksa panjangnya. Tumpukan menyimpan variabel lokal dan alamat pengembalian tersimpan yang memberi tahu CPU ke mana harus melanjutkan ketika sebuah fungsi selesai.

Jika masukan meluapkan penyangga lokal, masukan tersebut dapat menimpa alamat pengembalian yang tersimpan. Siapa pun yang mengendalikan alamat pengembalian akan mengendalikan tujuan eksekusi berikutnya.

// Vulnerable: no bound on how much is read into buf
void vuln() {
    char buf[64];
    gets(buf);   // reads until newline, ignores buf size
}

Luapan Penyangga Tumpukan Klasik

Eksploitasi biner paling sederhana adalah menimpa alamat pengembalian untuk melompat ke fungsi yang tidak pernah dimaksudkan untuk dipanggil oleh program — fungsi tersembunyi win() yang mencetak bendera.

Langkah-langkahnya:

  • Temukan jarak persis dari awal penyangga ke alamat pengembalian (alat pola siklik dapat menemukannya dengan cepat).
  • Temukan alamat fungsi target.
  • Kirim pengisi hingga mencapai jarak tersebut, lalu timpa alamat pengembalian dengan alamat target.
# Build the input with a Python exploit library
from pwn import *

p = process('./challenge')
offset = 72                 # bytes to reach the return address
win_addr = 0x401176        # address of the win() function
p.sendline(b'A' * offset + p64(win_addr))
p.interactive()

Mitigasi Modern

Biner nyata mengaktifkan pertahanan yang memblokir luapan sederhana. Anda harus mengenalinya dengan checksec:

  • Nilai pengaman tumpukan — nilai rahasia yang ditempatkan sebelum alamat pengembalian; jika berubah, program akan dibatalkan. Anda harus membocorkannya terlebih dahulu.
  • NX (No-eXecute) — tumpukan tidak dapat dieksekusi, sehingga Anda tidak dapat menjalankan kode shell yang ditempatkan di sana.
  • ASLR / PIE — alamat diacak pada setiap eksekusi, sehingga Anda memerlukan kebocoran alamat sebelum dapat mengarahkan serangan.
  • RELRO — melindungi tabel posisi global dari penimpaan.

Setiap mitigasi mendorong Anda untuk menggunakan teknik yang lebih maju.

Pemrograman Berorientasi Pengembalian (ROP)

Ketika NX menghentikan Anda menjalankan kode sendiri, Pemrograman Berorientasi Pengembalian menggunakan kembali kode yang sudah ada di dalam biner.

Anda merangkai potongan-potongan instruksi pendek yang disebut gadget, masing-masing diakhiri dengan ret, untuk melakukan tindakan sedikit demi sedikit — misalnya memuat sebuah register dan memanggil fungsi pustaka untuk memulai terminal. Anda membangun rangkaian tersebut di tumpukan agar setiap ret melompat ke gadget berikutnya.

ROP menjadi penghubung dari luapan pemula menuju eksploitasi dunia nyata, ketika kode penyerang jarang dapat dieksekusi secara langsung.

Bug Format Teks

Primitif eksploitasi biner klasik lainnya adalah kerentanan format teks, yaitu ketika masukan pengguna diteruskan langsung sebagai argumen format ke fungsi pencetak.

// Vulnerable: user controls the format string
printf(user_input);          // dangerous

// Safe: user input is data, not format
printf("%s", user_input);    // correct

Mengapa Para Pembela Mempelajari Ini

Anda mempelajari cara mengeksploitasi bug memori secara tepat agar dapat mencegahnya. Pelajaran untuk pertahanan sangat konkret:

  • Jangan pernah menggunakan fungsi masukan tanpa batas seperti gets atau strcpy; gunakan padanannya yang memeriksa panjang.
  • Aktifkan mitigasi: nilai pengaman, NX, ASLR/PIE penuh, dan RELRO penuh secara bawaan.
  • Utamakan bahasa yang aman terhadap memori jika model ancamannya memungkinkan.
  • Anggap setiap nilai yang dikendalikan pengguna dan mencapai format teks atau penyalinan penyangga sebagai temuan serius dalam peninjauan kode.

Uji Cepat

Uji pemahaman Anda tentang dasar-dasar rekayasa balik dan eksploitasi biner.

Rangkuman

Sekarang Anda memiliki peta rekayasa balik dan eksploitasi biner:

  • Triase setiap biner dengan file, strings, dan checksec sebelum melakukan analisis mendalam.
  • Gabungkan analisis statis (pembongkar kode/dekompiler) dan dinamis (pengawakutu) untuk memahami logika.
  • Eksploitasi biner dimulai dari luapan penyangga tumpukan yang menimpa alamat pengembalian; mitigasi (nilai pengaman, NX, ASLR/PIE, RELRO) meningkatkan tingkat kesulitannya.
  • ROP mengatasi NX dengan menggunakan kembali gadget yang sudah ada; bug format teks muncul karena argumen format yang tidak tepercaya.
  • Setiap teknik juga menjadi pelajaran pertahanan untuk menulis dan meninjau kode yang lebih aman.

Selanjutnya, Anda akan membangun perangkat kerja dan belajar menulis laporan penyelesaian.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Dasar-Dasar Reversing dan Pwn” gratis?

Ya — teks lengkap “Dasar-Dasar Reversing dan Pwn” 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 “Dasar-Dasar Reversing dan Pwn”?

Pengantar rekayasa balik dan eksploitasi biner. 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 3 dari 4.

Berapa lama pelajaran “Dasar-Dasar Reversing dan Pwn” 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

  1. Kategori dan Pola Pikir CTF
  2. Tantangan Web dan Kripto
  3. Dasar-Dasar Reversing dan Pwn
  4. Peralatan dan Writeup
← Kembali ke Cyber Security Academy