我最近读了一篇关于缓冲区溢出的文本,提到设置断点可以稍微抵消你的内存地址。我想我前几天试图覆盖EIP时遇到了这个问题:当我没有设置断点时,漏洞效果似乎有效,但是当设置断点时会导致段错误。发生了什么事?
谢谢!
答案 0 :(得分:0)
我最近阅读了一篇关于缓冲区溢出的文本,提到设置断点可以稍微抵消你的内存地址。
要么您不明白该文字的内容,要么文字错误。很难说这两种可能性中的哪一种是正确的,因为你没有提供文本链接或实际引用。
更新
http://www.deadc0de.info/2009/11/08/solution-level5-of-smashthestack-io/
“正如我上面所说,我们的回信地址完全被覆盖了 带有C的堆栈(0x43)。但是,当您设置断点时 printf()地址可能会改变。“
这句话是虚假的。设置断点不能也不会更改存储%ebp
和返回地址的堆栈位置。
设置断点通常不会影响内存布局,但可能会影响页面保护:为了插入断点,调试器通常会ptrace(PTRACE_POKETEXT, ...)
。这可能会或可能不会导致.text
页面断点可写(取决于操作系统)。
发生了什么事?
您没有提供足够的数据来回答这个问题。