p**p 发帖数: 3386 | 1 遇到一个麻烦的问题,还望这里的XD多多指教。写了一个linux下c程序循环读取用
户输入,然后将输入发送到一个客户端。现在的问题是,在执行一次循环以后,提
示用户输入的窗口会自动填充一些奇怪的字符,有时是之前在linux下敲过的命令,
有时是使用的ssh client软件名(如putty)。哪位知道这是怎么回事啊? |
l**t 发帖数: 64 | 2 查一下字符数组是否溢出了
【在 p**p 的大作中提到】 : 遇到一个麻烦的问题,还望这里的XD多多指教。写了一个linux下c程序循环读取用 : 户输入,然后将输入发送到一个客户端。现在的问题是,在执行一次循环以后,提 : 示用户输入的窗口会自动填充一些奇怪的字符,有时是之前在linux下敲过的命令, : 有时是使用的ssh client软件名(如putty)。哪位知道这是怎么回事啊?
|
p**p 发帖数: 3386 | 3 如果是溢出的话,不应该出现segmentation fault么?
【在 l**t 的大作中提到】 : 查一下字符数组是否溢出了
|
l**t 发帖数: 64 | 4 谁说一定出现段错误,搞缓冲区溢出攻击的人岂不死绝了
举个最简单的例子:
void BufferTest()
{
char prompt[] = "input:";
char userdata[1];
strcpy(userdata, "bhello!");
printf("%s", prompt); //变成"hello!"
}
如果把填入userdata的数据再搞大点,里面加点自己的代码,可以把栈里函数返回地址
冲掉成自己的代码的入口地址,然后执行代码
系统里每个内存页面都有属性,比如只读,可写,可执行,如果用户对只读的页面做写
操作,或者超过权限访问内核页面,等等,就会引发系统异常
【在 p**p 的大作中提到】 : 如果是溢出的话,不应该出现segmentation fault么?
|
c***k 发帖数: 1589 | |