Ethical Hacking Academy · Pelajaran

Mengawal EIP

Tulis ganti alamat pemulangan

Pelajaran 3 daripada 413 langkah

Mengawal EIP ialah pelajaran Ethical Hacking Academy percuma di CoddyKit. Ini ialah pelajaran 3 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.

Matlamat

Anda sudah mempunyai ofset, jadi Anda boleh meletakkan mana-mana empat bait ke dalam EIP. Persoalannya sekarang: alamat apakah yang patut Anda letakkan di situ?

Anda mahu EIP menunjuk kepada shellcode Anda. Namun, Anda tidak boleh menetapkan alamat timbunan secara terus; Anda memerlukan lompatan yang boleh dipercayai.

Mengapa Tidak Menetapkan Alamat Timbunan Secara Terus?

Alamat timbunan tempat shellcode Anda berada boleh berubah antara pelaksanaan dan sistem. Perubahan kecil pada persekitaran pun boleh mengalihkannya.

Sebaliknya, Anda menggunakan arahan stabil yang sedia ada dalam memori untuk menghalakan pelaksanaan ke tempat ESP menunjuk pada masa itu.

Helah JMP ESP

Jika ESP menunjuk kepada shellcode Anda ketika ranap, Anda boleh menetapkan EIP kepada alamat arahan JMP ESP. Apabila EIP memuatkan alamat itu, CPU melaksanakan jmp esp lalu melompat ke shellcode Anda.

Pengarahan tidak langsung ini menjadikan eksploit boleh dipercayai tanpa mengira alamat timbunan yang tepat.

jmp esp   ; opcode FF E4

Mencari JMP ESP

Anda mencari modul yang dimuatkan (sebaik-baiknya modul tanpa ASLR) untuk bait kod operasi FF E4. Alamat asas modul kekal malar, jadi alat ini boleh dipercayai.

Alat seperti mona.py mencari arahan yang sesuai secara automatik.

!mona jmp -r esp -cpb "\x00"

Mengelakkan Aksara Buruk

Sesetengah nilai bait merosakkan input sebelum ia sampai ke penimbal dengan utuh. Nilai klasik ialah bait nol 0x00, yang menamatkan rentetan C. Nilai lain termasuk 0x0a (baris baharu) dan 0x0d (pulangan pengangkutan).

Alamat JMP ESP tidak boleh mengandungi mana-mana aksara buruk ini.

Mengenal Pasti Aksara Buruk

Untuk mencari bait yang buruk, hantar semua nilai bait 0x00-0xff dalam penimbal dan periksa memori dalam penyahpepijat. Bait yang berubah atau hilang ialah aksara buruk.

Anda akan mengecualikan bait ini daripada alamat pemulangan dan shellcode.

!mona bytearray -cpb "\x00"

Membina Penulisan Ganti EIP

Sekarang susun input: pengisi sehingga ofset, kemudian alamat JMP ESP dalam susunan little-endian.

Jika JMP ESP berada pada 0x625011AF, bait yang ditulis adalah dalam susunan terbalik.

buf = "A"*offset + "\xaf\x11\x50\x62"  # 0x625011AF, little-endian

Mengesahkan Lompatan

Tetapkan titik henti pada alamat JMP ESP dalam penyahpepijat dan jalankan eksploit. Apabila EIP sampai ke alamat itu dan melangkah ke ESP, Anda telah mengesahkan pengalihan semula yang boleh dipercayai.

Pada ketika ini EIP menunjuk ke tempat shellcode Anda akan diletakkan.

Menyediakan Ruang untuk Shellcode

Selepas alamat pemulangan, penimbal yang berbaki (tempat ESP menunjuk) menyimpan shellcode Anda. Jika ruang sempit, Anda mungkin perlu menggunakan lompatan pendek atau memindahkannya.

Denai NOP (rentetan bait tiada operasi 0x90) sebelum shellcode menambah toleransi supaya lompatan boleh mendarat di mana-mana tempat dalam denai itu.

buf = "A"*offset + ret + "\x90"*16 + shellcode

Menggabungkan Semuanya

Struktur eksploit penuh kini jelas:

  • Pengisi sehingga ofset.
  • Alamat JMP ESP (tiada aksara buruk, little-endian).
  • Denai NOP.
  • Shellcode.

Anda hanya selangkah lagi daripada mendapatkan cangkerang.

Alternatif kepada JMP ESP

JMP ESP ialah pengalihan klasik, tetapi bukan satu-satunya pilihan. Jika daftar lain menunjuk kepada penimbal Anda, Anda boleh menggunakan jmp eax, call esp atau alat push esp; ret.

Prinsipnya sama: cari arahan stabil yang memindahkan kawalan ke tempat shellcode Anda berada.

Semakan Pantas

Ingat semula sebab JMP ESP lebih diutamakan berbanding alamat timbunan yang ditetapkan secara terus.

Imbas Kembali

Kini Anda mengawal aliran pelaksanaan:

  • Tulis ganti EIP dengan alamat alat JMP ESP dan bukannya alamat timbunan yang rapuh.
  • Cari alat itu dalam modul bukan ASLR dan elakkan aksara buruk seperti 0x00.
  • Tulis alamat dalam susunan little-endian dan tambahkan denai NOP sebelum shellcode.

Seterusnya Anda akan menjana shellcode dan mendapatkan cangkerang.

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 “Mengawal EIP” percuma?

Ya — teks penuh “Mengawal EIP” 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 “Mengawal EIP”?

Tulis ganti alamat pemulangan 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 3 daripada 4.

Berapa lamakah pelajaran “Mengawal EIP” 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