我正在处理缓冲区溢出 CTF 挑战。此挑战的二进制文件包含一个give_shell
函数(它们将在下一个挑战中介绍 shellcode)
我可以成功覆盖堆栈上保存的 EIP 以将执行重定向到 'give_shell' 函数:
080484cb push ebp
080484cc mov ebp, esp
080484ce sub esp, 0x8
080484d1 sub esp, 0xc
080484d4 push 0x80485f0 {var_1c} {"/bin/sh"}
080484d9 call system
080484de add esp, 0x10
080484e1 nop
080484e2 leave {__saved_ebp}
080484e3 retn
但是,即使我可以在 GDB 中确认该程序正在逐步执行该give_shell
功能 - 无论是在 GDB 中、本地还是使用 Netcat 到实际的 CTF 服务器,都没有启动 shell。
我不确定我在这里缺少什么。这是我需要绑定或反转 shell 以便能够交互使用它的情况吗?我已经看到在 shellcode 示例中讨论过,但不确定在这种情况下如何做。
谢谢!