Tujuan
Susun nilai 32-bit yang tepat untuk membuka kunci program.
Konsep
Integer 32-bit menempati empat byte. Pada x86, urutannya little-endian: byte dengan nilai paling rendah berada pada alamat paling rendah. Sebagai contoh terpisah, angka 0x11223344 disimpan sebagai 44 33 22 11.
Pembantu p32(angka) mengubah angka menjadi empat byte little-endian. Menulis teks angka heksadesimal menghasilkan karakter ASCII, bukan representasi integer tersebut. Kunci soal ini adalah 0x6b657931; program memeriksa seluruh empat byte.
Panduan alat
Temukan buffer dan kunci pada representasi C. Jalankan masukan pendek terlebih dahulu. Gunakan pratinjau Lihat byte heksadesimal untuk memeriksa byte hasil ekspresi sebelum menjalankannya.
Sesudah uji, bandingkan empat byte setelah buffer pada panel Memori stack dengan nilai yang diminta. Alamat dan isi byte adalah dua hal berbeda: Anda sedang mengubah sebuah nilai, bukan menulis alamat fungsi.
Tantangan
Ubah kunci awal yang bernilai nol menjadi tepat 0x6b657931. Program harus mencetak STACK_MAGIC_OK. Masukan dibatasi sampai akhir kunci; ret2win tidak diperlukan.
Pilih Uji payload untuk menjalankan masukan di browser. Setelah berhasil, Kirim jawaban meminta verifikasi server dan menyimpan progress. Masuk dengan GitHub diperlukan untuk mengirim jawaban.
Petunjuk dapat dibuka satu per satu. Untuk akun yang masuk, setiap petunjuk mengurangi poin sesuai aturan yang ditampilkan di panduan.
Source latihan
Tab Kode sumber menampilkan representasi konsep C. Binary dibuat dari assembly GNU; layout stack mengikuti assembly tersebut, bukan hasil kompilasi C. Anda juga dapat mengunduh binary latihan.