缓冲区溢出:NOP sled 不工作

Buffer Overflow: NOP sled not working

嘿,我想在一个基本的 C 程序上做一个缓冲区溢出,我在 gdb 中使用的 shellcode 的形式是

NOP sled 然后 msfvenom payload 连接回我自己的机器,最后是 NOP sled 中某处的内存地址。

当运行 gdb 时,在执行shellcode 之前,我可以看到NOP 指令从0x7fffffffe010 开始,这是我在shellcode 末尾的地址。执行 shellcode 后,rip 寄存器位于 0x7fffffffe010,但它给了我警告:

 Cannot insert breakpoint 0.
 Cannot access memory at address 0x40000

 0x00007fffffffe010 in ?? ()

我认为 rip 现在会读取 NOP 并进入有效载荷以连接回我的机器我不明白为什么它不起作用。

解决了!

我需要在没有堆栈保护和可执行堆栈的情况下编译 c,即:

gcc -fno-stack-protector -z execstack -o output file.c