最近のOSは、セキュリティの観点からスタック上でプログラムを実行することが出来ません。
スタックオーバーフローを利用して、root権限を奪取するプログラムは、スタック上で実行します。
ご多分に漏れず、ubuntuでも現在スタック上でプログラム実行は不可能です。
ただ、gccでのコンパイル時、オプション -z execstackを指定することで、
スタック上でのプログラム実行可能なプログラムを作成することが出来ます。
gcc -z execstack