GDB在进入断点时抛出错误

时间:2015-12-06 01:07:21

标签: c gdb buffer-overflow

我正试图关注缓冲区溢出的视频tutoial link 以下是我正在尝试的代码。

#include <stdio.h>

GetInput() 
{
    char buffer[8];

    gets(buffer);
    puts(buffer);   
}

main()
{
   GetInput();       
   return 0;
}

我在gdb调试中得到了一个问题,当我走到第7行时,我得到以下错误:

_IO_gets (buf=0xbffff458 "k\204\004\b") at iogets.c:33
33  iogets.c: No such file or directory.

我遵循与本教程中提到的完全相同的步骤。 我在虚拟盒子上使用32位Kali linux

任何人都可以帮助我解决这个问题。

2 个答案:

答案 0 :(得分:4)

该帖子的作者正在遵循缓冲区溢出开发课程。不是帮助他,每个人都跳出主题信息。我们都知道代码是错误的,但是,如果没有错误的代码,你应该如何学习缓冲区溢出利用呢?

在这种情况下,调试没有正常工作,因为调试文件的位置在其他地方。

(gdb) show debug-file-directory
The directory where separate debug symbols are searched for is "/usr/lib/debug"

在gdb

中执行以下操作
(gdb) set debug-file-directory

现在您可以调试代码了。 HF

答案 1 :(得分:0)

原因很简单, glibc 源代码丢失了。无论如何都没关系,因为 glibc 中可能存在错误,在这种情况下,您的代码使用了危险的,已弃用的gets(),因此它很容易溢出buffer数组,导致未定义的行为