Ethical Hacking Academy · Pelajaran

Memori dan Stack

Cara limpahan berfungsi

Pelajaran 1 daripada 413 langkah

Memori dan Stack ialah pelajaran Ethical Hacking Academy percuma di CoddyKit. Ini ialah pelajaran 1 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Ethical Hacking Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Ethical Hacking Academy merangkumi sejumlah 4 pelajaran.

Susun Atur Memori Proses

Apabila program berjalan, sistem pengendalian memberikan susun atur memori dengan rantau yang berbeza: teks (kod), data/BSS (pemboleh ubah global), timbunan (peruntukan dinamik) dan tindanan.

Limpahan penimbal paling kerap menyalahgunakan tindanan, jadi memahaminya amat penting.

Apakah Tindanan?

Tindanan ialah rantau memori yang digunakan untuk panggilan fungsi. Tindanan menyimpan pemboleh ubah tempatan, argumen fungsi dan alamat pemulangan.

Tindanan berkembang ke bawah pada x86: menolak data menggerakkan penuding tindanan ke arah alamat yang lebih rendah. Arah ini penting apabila limpahan berlaku.

Bingkai Tindanan

Setiap panggilan fungsi mencipta bingkai tindanan. Bingkai biasanya mengandungi pemboleh ubah tempatan, penuding asas yang disimpan (EBP) dan alamat pemulangan (EIP yang disimpan).

Alamat pemulangan memberitahu CPU tempat untuk meneruskan pelaksanaan selepas fungsi selesai. Mengawalnya ialah teras eksploitasi limpahan tindanan.

Daftar Utama

Pada x86 32-bit, daftar penting ialah:

  • ESP: penuding tindanan, bahagian atas tindanan.
  • EBP: penuding asas, penambat bagi bingkai semasa.
  • EIP: penuding arahan, alamat arahan seterusnya.

Jika anda mengawal EIP, anda mengawal aliran pelaksanaan.

Apakah Penimbal?

Penimbal ialah blok memori bersaiz tetap, seperti tatasusunan aksara tempatan. Program menjangkakan data muat di dalamnya.

Jika program menyalin lebih banyak data daripada kapasiti penimbal tanpa memeriksa panjangnya, lebihan data akan melimpah ke memori bersebelahan.

char buffer[64];
strcpy(buffer, user_input); // no bounds check

Limpahan

Limpahan penimbal berlaku apabila input melebihi saiz penimbal lalu menulis ganti data bersebelahan pada timbunan.

Oleh sebab EBP yang disimpan dan alamat pemulangan terletak tepat selepas penimbal tempatan, input yang cukup besar boleh menulis ganti alamat pemulangan lalu merampas aliran kawalan.

Fungsi Berbahaya

Limpahan biasanya berpunca daripada fungsi C yang tidak selamat dan tidak menyemak panjang:

  • strcpy, strcat, sprintf, gets.

Alternatif yang lebih selamat seperti strncpy atau snprintf menerima had saiz, tetapi kod legasi dipenuhi fungsi yang berbahaya itu.

gets(buffer); // never use: no length limit at all

Kesan Menulis Ganti EIP

Apabila fungsi yang terdedah memulangkan kawalan, CPU mengambil alamat pemulangan (yang kini dikawal penyerang) ke dalam EIP lalu melompat ke alamat tersebut.

Jika Anda menetapkan EIP supaya menunjuk kepada kod mesin yang disuntik sendiri (shellcode), CPU akan melaksanakannya dengan keistimewaan program tersebut.

Pengalamatan Little-Endian

x86 menggunakan little-endian: nilai berbilang bait disimpan dengan bait paling kurang signifikan dahulu. Untuk menulis ganti alamat pemulangan dengan 0x080414C3, Anda menulis bait dalam susunan terbalik.

Kesilapan dalam menentukan endian ialah kesilapan biasa pemula yang menyebabkan eksploit gagal secara senyap.

address 0x080414C3 -> bytes \xc3\x14\x04\x08

Perlindungan Moden

Sistem moden menambah pertahanan yang merumitkan eksploitasi:

  • DEP/NX: menandakan timbunan sebagai tidak boleh dilaksanakan.
  • ASLR: merawakkan alamat memori.
  • Canari timbunan: mengesan penulisan ganti sebelum pemulangan.

Kursus ini memfokuskan kes klasik (perlindungan dimatikan) untuk mengajar asas.

Mengapa Perkara Ini Masih Penting

Walaupun pertahanan moden menjadikan limpahan timbunan klasik lebih sukar, asasnya masih penting. Sistem terbenam, IoT dan perisian legasi sering tidak mempunyai perlindungan ini langsung.

Menguasai kes asas juga merupakan prasyarat untuk teknik lanjutan seperti ROP yang memintas mitigasi moden.

Semakan Pantas

Ingat semula nilai yang akhirnya ingin dikawal oleh penyerang.

Imbas Kembali

Kini Anda memahami asas-asasnya:

  • Timbunan menyimpan pemboleh ubah tempatan, EBP yang disimpan dan alamat pemulangan, serta berkembang ke bawah.
  • ESP, EBP, EIP ialah daftar utama x86; mengawal EIP bermaksud mengawal pelaksanaan.
  • Fungsi tidak selamat seperti strcpy dan gets menyebabkan limpahan.
  • x86 menggunakan little-endian; pertahanan moden ialah DEP, ASLR dan canari.

Seterusnya Anda akan menguji program secara fuzz untuk mencari ofset ranap.

Percuma untuk bermula

Pelajari Ethical Hacking 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
31
Pelajaran
111

Soalan Lazim

Adakah pelajaran “Memori dan Stack” percuma?

Ya — teks penuh “Memori dan Stack” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus Ethical Hacking Academy, tingkat taraf kepada CoddyKit PRO. Kursus Ethical Hacking Academy merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “Memori dan Stack”?

Cara limpahan berfungsi Anda berlatih Ethical Hacking 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 Ethical Hacking Academy?

Tiada pengalaman terdahulu diperlukan. Pembelajaran Ethical Hacking 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 1 daripada 4.

Berapa lamakah pelajaran “Memori dan Stack” 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 Ethical Hacking Academy ini?

Ya. Setiap pelajaran Ethical Hacking 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. Memori dan Stack
  2. Fuzzing untuk Kerosakan
  3. Mengawal EIP
  4. Shellcode dan Eksploitasi
← Kembali ke Ethical Hacking Academy