【发布时间】:2012-03-05 10:53:28
【问题描述】:
我想知道我的应用程序中的缓冲区溢出。 例如我有这个代码:
enum { BUFSIZE = 1024};
char username[this->BUFSIZE];
memset(username,0,BUFSIZE);
char password[this->BUFSIZE];
memset(password,0,BUFSIZE);
send(client_fd, "Login: ", BUFSIZE, 0);
recv(client_fd,username,sizeof(username),0)
恶意攻击者可以输入超过 1024 个字符并执行 bof 吗?
【问题讨论】:
-
不要忘记 C 字符串需要空格来存放终止符号
'\0'。目前,UDP 操作可能会完全填充您的用户名,从而呈现无效的 C 字符串,这可能会在以后使您的程序崩溃。检查 recv 的返回值来捕捉它并自己添加一个\0。
标签: c buffer-overflow recv