繁体   English   中英

nasm程序集sys_execve / bin / sh

[英]nasm assembly sys_execve /bin/sh

我正在尝试触发sys_execve(X86_64)。

section .data
file db "/bin/sh",0

section .text
global _start

_start:

mov rax, 59
mov rdi, file
lea rsi, [file] 
mov rdx, 0
syscall

给出细分错误

我究竟做错了什么?

我什至试图将其放在C源代码中:

int main(void)
{
char shellcode[] =
"\xb8\x3b\x00\x00\x00"
"\x48\xbf\xd0\x00\x60\x00\x00"
"\x00\x00\x00"
"\x48\x8d\x34\x25\xd0\x00\x60"
"\x00"
"\xba\x00\x00\x00\x00"
"\x0f\x05";

(*(void (*)()) shellcode)();

return 0;
}

这也给我一个细分错误...

通过将字符串/bin/sh的地址加载到rsi使内核取消引用字符串/bin/sh作为指针。

只需通过将dxsi设置为0来传递一个空的环境和参数。

section .text
global _start

_start:
  mov rax, 59
  mov rdi, file  // *filename
  mov rsi, 0     // *argv
  mov rdx, 0     // *envp
  syscall

section .data
  file db "/bin/sh",0

我想到了:

section .data
file db '/bin/sh',0
file_arg db 'sh',0
argv dq file_arg, 0

section .text
global _start
_start:
mov     rax, 59
mov     rdi, file
mov     rsi, argv
mov     rdx, 0
syscall

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM