我正在学习使用 GDB 导致安全类的缓冲区溢出。我有一个输入文件,当我将其作为输入输入时,它通过写入缓冲区溢出成功地导致程序跳转到未经授权的函数,如下所示:
sh myFile.txt | ./myProgram
现在我想使用 GDB 检查未经授权的功能。但是,当我使用tty 命令或使用 < GDB将 myFile 作为输入提供给 GDB 时,只需要我输入的中间 20 字节来填充 20 字节缓冲区。似乎 GDB 正在“检查”输入的缓冲区大小。
- 这就是gdb正在做的事情吗?
- 如果是这样,有没有办法关闭它?
C 代码如下所示:
char one[20];
char two[20];
printf("..."); fflush(stdout);
gets(one); //only takes 20 bytes from the middle of printf "morethan20bytes..." from input file
printf("..."); fflush(stdout);
gets(two); //only takes 20 bytes from the middle of printf "morethan20bytes..." from input file