Cyber Security Academy · Pelajaran

Asas Kejuruteraan Balik dan Eksploitasi Binari

Pengenalan kepada kejuruteraan balik dan eksploitasi binari.

Pelajaran 3 daripada 413 langkah

Asas Kejuruteraan Balik dan Eksploitasi Binari ialah pelajaran Cyber Security Academy percuma di CoddyKit. Ini ialah pelajaran 3 daripada 4. Sebanyak 3 pelajaran dalam laluan pembelajaran ini boleh dibaca sepenuhnya secara percuma — selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan praktikal dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Cyber Security Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Cyber Security Academy merangkumi sejumlah 4 pelajaran.

Kejuruteraan Balikan dan Pwn Secara Ringkas

Dua kategori CTF yang berkait rapat melibatkan program yang telah dikompil:

  • Kejuruteraan balikan (rev) — anda menganalisis binari untuk memahami perkara yang dilakukannya, biasanya bagi mendapatkan semula semakan kata laluan atau logik tersembunyi yang mencetak bendera.
  • Pwn (eksploitasi binari) — anda mencari pepijat keselamatan ingatan dalam binari yang sedang berjalan dan mengeksploitasinya untuk merampas kawalan pelaksanaan, selalunya bagi memulakan cangkerang pada perkhidmatan jauh yang menyimpan bendera.

Rev berkaitan dengan pemahaman; pwn berkaitan dengan memecahkan sesuatu. Kedua-duanya memerlukan penguasaan konsep aras rendah.

Pandangan Pertama terhadap Binari

Jangan sekali-kali membuka binari secara membuta tuli dalam penyahhimpun. Buat saringan awal dengan alat baris perintah yang pantas untuk mengetahui jenis, seni bina dan sebarang rentetan teks yang jelas.

# 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 Statik berbanding Dinamik

Anda menganalisis binari melalui dua cara yang saling melengkapi:

  • Analisis statik — baca kod tanpa menjalankannya, menggunakan penyahhimpun atau penyahkompil seperti Ghidra atau paparan penyahhimpun. Anda dapat melihat keseluruhan aliran kawalan tetapi perlu membuat kesimpulan tentang nilai semasa jalan.
  • Analisis dinamik — jalankan program di bawah penyahpepijat seperti GDB dan perhatikan nilai sebenar dalam daftar serta ingatan. Anda dapat melihat perkara yang berlaku dengan tepat, tetapi hanya sepanjang laluan yang anda jalankan.

Pemain yang mahir beralih antara kedua-duanya: baca secara statik untuk membentuk teori, kemudian sahkan secara dinamik dengan melangkah melaluinya.

Membaca Penyahhimpunan

Untuk melakukan kejuruteraan balikan, anda membaca bahasa himpunan. Anda tidak perlu menulisnya dengan lancar, tetapi mesti mengenali corak:

  • cmp / test diikuti oleh lompatan (je, jne) ialah perbandingan dan percabangan — selalunya semakan kata laluan.
  • call memanggil fungsi; argumen telah diletakkan dalam daftar atau pada tindanan sejurus sebelumnya.
  • mov memindahkan data antara daftar, ingatan dan pemalar.

Apabila anda menemukan cmp terhadap masukan anda yang diikuti percabangan ke mesej kejayaan, anda telah menemukan semakan tersebut. Sekarang dapatkan semula atau pintas nilai yang dijangkakan.

Penyahkompil Mempercepatkan Kerja Anda

Penyahkompil moden menukarkan bahasa himpunan kembali kepada C anggaran, yang jauh lebih pantas dibaca berbanding arahan mentah. Semakan kata laluan yang dinyahkompil mungkin kelihatan seperti ini:

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

Bagaimana Kerosakan Ingatan Bermula

Cabaran Pwn mengeksploitasi program yang membaca masukan ke dalam penimbal tetap tanpa menyemak panjangnya. Tindanan menyimpan pemboleh ubah setempat dan alamat pemulangan yang disimpan, yang memberitahu CPU ke mana hendak pergi apabila fungsi selesai.

Jika masukan melimpahi penimbal setempat, masukan itu boleh menulis ganti alamat pemulangan yang disimpan tersebut. Sesiapa yang mengawal alamat pemulangan menentukan ke mana pelaksanaan seterusnya pergi.

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

Limpahan Penimbal Tindanan Klasik

Eksploitasi Pwn paling mudah ialah menulis ganti alamat pemulangan untuk melompat ke fungsi yang tidak pernah dimaksudkan oleh program untuk dipanggil — win() tersembunyi yang mencetak bendera.

Langkah-langkahnya:

  • Cari ofset tepat dari permulaan penimbal ke alamat pemulangan (alat corak kitaran dapat memberikannya dengan cepat).
  • Cari alamat fungsi sasaran.
  • Hantar pengisi sehingga ofset, kemudian tulis ganti alamat pemulangan dengan sasaran.
# 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()

Mekanisme Perlindungan Moden

Binari sebenar mengaktifkan pertahanan yang menyekat limpahan naif. Anda mesti mengenal pastinya dengan checksec:

  • Canari tindanan — nilai rahsia yang diletakkan sebelum alamat pemulangan; jika nilainya berubah, program akan dihentikan. Anda mesti membocorkannya dahulu.
  • NX (Tanpa-eXecute) — tindanan tidak boleh dilaksanakan, jadi anda tidak boleh menjalankan kod cangkerang yang diletakkan di situ.
  • ASLR / PIE — alamat diacakkan pada setiap pelaksanaan, jadi anda memerlukan kebocoran alamat sebelum boleh membidiknya.
  • RELRO — melindungi jadual ofset global daripada ditulis ganti.

Setiap mekanisme perlindungan mendorong anda ke arah teknik yang lebih maju.

Pengaturcaraan Berorientasikan Pemulangan (ROP)

Apabila NX menghalang anda daripada menjalankan kod sendiri, Pengaturcaraan Berorientasikan Pemulangan menggunakan semula kod yang sudah ada dalam binari.

Anda merangkaian jujukan arahan pendek yang dipanggil serpihan, setiap satunya berakhir dengan ret, untuk melaksanakan tindakan sedikit demi sedikit — contohnya memuatkan daftar dan memanggil fungsi pustaka bagi memulakan cangkerang. Anda membina rangkaian itu pada tindanan supaya setiap ret melompat ke serpihan seterusnya.

ROP ialah jambatan daripada limpahan asas kepada eksploitasi dunia sebenar, yang kod penyerangnya jarang boleh dilaksanakan secara langsung.

Pepijat Rentetan Format

Satu lagi asas Pwn klasik ialah kelemahan rentetan format, apabila masukan pengguna dihantar terus sebagai argumen format kepada fungsi cetak.

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

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

Mengapa Pembela Mempelajari Ini

Anda belajar mengeksploitasi pepijat ingatan dengan tepat supaya dapat mencegahnya. Pengajaran pertahanannya adalah konkrit:

  • Jangan sekali-kali menggunakan fungsi masukan tanpa had seperti gets atau strcpy; gunakan padanan yang menyemak panjang.
  • Pastikan mekanisme perlindungan diaktifkan: canari, NX, ASLR/PIE penuh dan RELRO penuh secara lalai.
  • Utamakan bahasa yang selamat dari segi ingatan apabila model ancaman membenarkannya.
  • Anggap sebarang nilai yang dikawal pengguna dan sampai ke rentetan format atau penyalinan penimbal sebagai penemuan serius dalam semakan kod.

Semakan Pantas

Uji pemahaman anda tentang asas kejuruteraan balikan dan Pwn.

Imbas Kembali

Anda kini mempunyai gambaran keseluruhan tentang kejuruteraan balikan dan Pwn:

  • Saringan awal setiap binari dengan file, strings dan checksec sebelum analisis mendalam.
  • Gabungkan analisis statik (penyahhimpun/penyahkompil) dan dinamik (penyahpepijat) untuk memahami logik.
  • Pwn bermula dengan limpahan penimbal tindanan yang menulis ganti alamat pemulangan; mekanisme perlindungan (canari, NX, ASLR/PIE, RELRO) meningkatkan tahap kesukaran.
  • ROP mengatasi NX dengan menggunakan semula serpihan sedia ada; pepijat rentetan format timbul daripada argumen format yang tidak dipercayai.
  • Setiap teknik juga menjadi pengajaran pertahanan untuk menulis dan menyemak kod yang lebih selamat.

Seterusnya, anda membina kit peralatan dan belajar menulis laporan penyelesaian.

Percuma untuk bermula

Pelajari Cyber Security Academy dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
76
Pelajaran
303

Soalan Lazim

Adakah pelajaran “Asas Kejuruteraan Balik dan Eksploitasi Binari” percuma?

Ya — sebanyak 3 pelajaran dalam laluan pembelajaran Cyber Security Academy, termasuk “Asas Kejuruteraan Balik dan Eksploitasi Binari”, boleh dibaca sepenuhnya secara percuma di web ini. Selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan interaktif dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Kursus Cyber Security Academy merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “Asas Kejuruteraan Balik dan Eksploitasi Binari”?

Pengenalan kepada kejuruteraan balik dan eksploitasi binari. Anda berlatih Cyber Security Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan Cyber Security Academy?

Tiada pengalaman terdahulu diperlukan. Pembelajaran Cyber Security Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 3 daripada 4.

Berapa lamakah pelajaran “Asas Kejuruteraan Balik dan Eksploitasi Binari” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran Cyber Security Academy ini?

Ya. Setiap pelajaran Cyber Security Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. Kategori dan Pemikiran CTF
  2. Cabaran Web dan Kripto
  3. Asas Kejuruteraan Balik dan Eksploitasi Binari
  4. Alat dan Penulisan Penyelesaian
← Kembali ke Cyber Security Academy