来看一个程序: 我这里不谈什么缓冲区溢出,也和各种漏洞无关,我这里说的仅仅是一个操作习惯,或者说编程习惯问题。 问题,输入abc会发生什么? 看看答案: Why?? 很简单,因为前台bash进程在exec了a.out之后,就把终端/dev/pts/0(或者别的)给了a.out,read(0,就是读取的这个终端的数据: 然而a.out仅仅读取1个字符,剩下的bc就会留在/dev/pts/0的输入缓冲区了,当你输入abc时,缓冲区里有3个字符,当回车按下后,输入缓冲区里有4个字符:‘a’,‘b’,‘c’,’CR’,发生了下面的事情: 万一你输入的是:arm -rf /呢… 所以,在程序的最后,别忘了清空你的输入缓冲区: 浙江温州皮鞋湿,下雨进水不会胖!#include <stdio.h> int main (int argc, char **argv) { char buf[1]; //syscall(0, 0, buffer, 1); read(0, buf, sizeof(buf)); printf("buf is: %sn", buf); return 0; }
[root@localhost ]# ./a.out abc buf is: a [root@localhost ]# bc bc 1.06.95 Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc. This is free software with ABSOLUTELY NO WARRANTY. For details type `warranty'. ^C (interrupt) Exiting bc.
int c while ((c = getchar()) != 'n' && c != EOF);
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算