汇编Ubuntu x86分段故障

pvcm50d1  于 2023-10-17  发布在  其他
关注(0)|答案(1)|浏览(94)

我得到了下面的汇编代码:

section .text
  global _start
    _start:
      ; Store the argument string on stack
      xor  eax, eax 
      push eax          ; Use 0 to terminate the string
      push "bash"
      mov al, 0x2f      ; Set "/" to the least significant byte of eax
      push eax          ; Add "/" onto the stack
      push "/bin"
      mov  ebx, esp     ; Get the string address

      ; Construct the argument array argv[]
      xor eax, eax      ; eax = 0x00000000
      push eax          ; argv[1] = 0
      push ebx          ; argv[0] points "/bin/bash"
      mov  ecx, esp     ; Get the address of argv[]
   
      ; For environment variable 
      xor  edx, edx     ; No env variables 

      ; Invoke execve()
      mov   al, 0x0b    ; eax = 0x0000000b
      int 0x80

它应该调用bash shell,但在编译为目标代码并链接生成二进制文件后,它会出现分段错误。操作系统Ubuntu x86.提前感谢!
禁止添加额外的哈希来完成此任务。

kpbwa7wx

kpbwa7wx1#

问题是mov al, 0x2f; push eax将推送4个字节而不是1个字节。试试看:

push "h"
  push "/bas"
  push "/bin"
  mov  ebx, esp     ; Get the string address

另外,请确保创建32位二进制文件。

相关问题