[Angstrom CTF 2020] – canary

Diberikan sebuah binary dengan konfigurasi sebagai berikut:

Berikut adalah list dari semua fungsi pada binary:

Berikut adalah pseudocode dari fungsi yang memiliki celah:

Dilihat program menggunakan gets() yang memiliki kelemahan buffer overflow dan printf(&format) memiliki kelemahan format string attack. Tujuan dari soal ini adalah untuk memanggil fungsi flag(). Namun dari nama soal dan konfigurasi binary, terdapat stack canary yang diketahui dapat menjadi proteksi terhadap stack smashing. Lalu bagaimana kita dapat melakukan buffer overflow jika terdapat canary? Stack canary berisi sebuah value, yang biasanya diakhiri dengan 0x00. Jika terjadi buffer overflow pada program, maka akan ada value yang berubah, Saat value dari stack canary itu berubah, saat sebelum RBP, canary akan di compare, dan jika berbeda, program akan exit dengan error message “stack smashing detected”. Jadi yang bisa kita lakukan untuk buffer overflow adalah dengan memastikan canary value akan tetap sama agar bisa melewati compare. Lalu setelah itu kita bisa melakukan teknik ret2win untuk menuju ke fungsi flag(). Berikut script yang digunakan:

Flag: actf{youre_a_canary_killer_>:(}

Leave a Reply

Your email address will not be published. Required fields are marked *