>>846->>849のみなさん、BOFについて丁寧に解説して下さってありがとうございます><
スタックはメインルーチンとサブルーチンの仲介役
ヒープはプログラムの開始〜終了まで使用するデータの格納庫 
メインルーチンからサブルーチンへ処理が移るときはメインルーチン内の次のメモリ番地をスタックに格納し、
サブルーチン内の処理が終了後スタックから再び番地を呼び出しそこへ戻る
そのようにしてスタックに格納する値をリターンアドレスという(上のレスでいう返却値)
指定されたバッファ領域の上限を超えるデータのExploitを発射し、
リターンアドレスを書き換えExploit内の不正な命令に誘導することで、
使用しているソフトウェアの管理者権限によってはrootを奪える

というわけですね。