アルパカ関数ポインタの配列 🦙🦙🦙🦙🦙
初心者向けヒント
- この問題は Pwn カテゴリー、すなわち Pwnable (Binary Exploitation) に関する問題です。
- 今回のゴールは、リモート環境で
win関数を実行してシェルを起動することです。 - win関数の
asm volatile("mov $0,%spl");は問題を簡単にするための処理です。system関数を呼び出す際にはrspが16の倍数でないといけません。なのでここでは問題を簡単にするためにrspの下位1バイトを0にすることで、rspを16の倍数にしています。これにより今回は特に気にせずwin関数を実行できればよいです。参考 - alpaca_functionsは関数ポインタの配列でスタック上に配置されます。
- 関数を呼び出すと、元の関数に戻るためのアドレス、リターンアドレスがスタック上に配置されます。