Я новичок в asm и пытаюсь выполнить системный вызов / bin / bash. Однако в настоящее время я сталкиваюсь со следующей проблемой:
Мой код работает для любого вызова execve, длина 1-го аргумента которого меньше 8 байтов, то есть «/ bin / sh» или «/ bin / ls»:
.section .data
name: .string "/bin/sh"
.section .text
.globl _start
_start:
#third argument of execve, set to NULL
xor %rdx, %rdx
#push nullbyte to the stack
pushq %rdx
#push /bin/sh to the stack
pushq name
#copy stack to rdi, 1st arg of execve
mov %rsp, %rdi
#copy 59 to rax, defining syscall number for execve
movq $59, %rax
#3rd arg of execve set to NULL
movq $0, %rsi
syscall
Меня озадачивает то, что я не могу заставить его работать с
name: .string "/bin/bash"
Я попытался разбить строку на части, чтобы нажать q "/ bash", затем "/ bin" в стек, похоже, ничто не позволяет мне заставить его работать, и я каждый раз получаю сообщение об ошибке "Недопустимая инструкция". Что я делаю неправильно?
Нерабочий код:
.section .data
name: .string "/bin/bash"
.section .text
.globl _start
_start:
#third argument of execve, set to NULL
xor %rdx, %rdx
#push nullbyte to the stack
pushq %rdx
#push /bin/sh to the stack
pushq name
#copy stack to rdi, 1st arg of execve
mov %rsp, %rdi
#copy 59 to rax, defining syscall number for execve
movq $59, %rax
#3rd arg of execve set to NULL
movq $0, %rsi
syscall
Другой нерабочий код:
.section .data
.section .text
.globl _start
_start:
#third argument of execve, set to NULL
xor %rdx, %rdx
#push nullbyte to the stack
pushq %rdx
#push /bin/bash to the stack
pushq $0x68
pushq $0x7361622f
pushq $0x6e69622f
#copy stack to rdi, 1st arg of execve
mov %rsp, %rdi
#copy 59 to rax, defining syscall number for execve
movq $59, %rax
#3rd arg of execve set to NULL
movq $0, %rsi
syscall
push
всегда записывает 8 байтов. Таким образом, вы должны разделить вашу строку на 8-байтовые части, за исключением последней части (которую вы нажимаете первой). - person Jester   schedule 20.12.2017.data
, нет необходимости копировать ее в стек. Вы можете просто использовать его адрес напрямую и покончить с этим. - person Jester   schedule 20.12.2017