Besoin d'aide pour l'implémentation de execve()
Salut,
Je viens vers vous car je bloque depuis des heures sur l'implémentation de execve("/bin/bash", ["/bin/bash", "-p", NULL],NULL) en assembleur. Je précise que je ne cherche pas à faire un shellcode :mrgreen: Voici mon code :
Code:
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 33 34
| ;a-s.asm
;nasm a-s.asm -o a-s.o -f elf && ld -s a-s.o -o a-s -melf_i386
segment .data
shell_path db "/bin/bash"
keep_uid db "/bin/bash0-p"
segment .text
global _start
_start:
mov eax,0
mov ebx,0
mov ecx,0
mov edx,0
mov ebx,shell_path
mov [ebx+9],al
mov ecx,keep_uid
mov [ecx+9],al
push ecx
mov edx,esp
;push edx
;mov ecx,esp
push 0
push edx ;ou ecx
push ebx
mov eax,11
int 0x80 |
Là, vous voyez une possibilité parmi les multiples que j'ai testées. En fait, je ne parviens pas à passer correctement les paramètres à execve(). J'ai essayé d'initialiser un tableau, mais je n'ai pas réussi. Avant qu'on me suggère telle ou telle piste à suivre, je précise que j'ai déjà codé la fonction en C pour regarder le résultat en assembleur. Je l'ai compris, cependant je n'arrive pas à le reproduire (notamment au niveau des déclarations des chaines qui, lorsque je les vois ne mémoire, ne me parlent pas trop).
Merci par avance pour vos réponses'