Если все, что вам нужно сделать - это запустить exec shell, скомпилировать
#include<unistd.h>
int main(){
static char* bash[] = {"/bin/bash", NULL};
execv(*bash, bash);
}
При dietlibc при diet -Os gcc test.c
получается исполняемый файл размером 2929 байт. Удаление двоичного файла с strip a.out
дает 1464 байта. Это также имеет то преимущество, что оно статически связано, что подходит для эксплойта.