玩栈溢出

void mytrap(void){
  puts("I win");
}
int func(int c){
  int buf[100];
  buf[10]=c;
  ///把以前的返回地址存储起来
  ///这里以前存储的是本函数的第一个参数的值
  buf[102]=buf[101];
  ///把栈中的返回地址给修改掉
  buf[101]=&mytrap;
  return 0;
}
int main(int argc,char\* argv[]){
  func(10);
  return 0;
}

以前我发现过windows xp自带的ftp客户端存在缓存区溢出的漏洞,并且在微软新闻组上报告了该漏洞。只是后来一两年也没发现过有关于它的补丁。

此博客中的热门博文

少写代码,多读别人写的代码

在windows下使用llvm+clang

tensorflow distributed runtime初窥