通常的缓冲区溢出就是通过重写堆栈中储存的EIP的内容,来使程序跳转到我们的shellcode处去执行。
其实,即使缓冲区只溢出一个字节的时候,也有可能去执行我们的代码。
单字节缓冲区溢出利用一个字节溢出来修改当前的ebp值,进而可以修改esp的值,通过控制esp的值来达到对eip值的控制
http://www.nsfocus.net/index.php?act=magazine&do=view&mid=338
http://wangcong.org/blog/archives/867
http://en.wikipedia.org/wiki/Off-by-one_error
http://www.nsfocus.net/index.php?act=magazine&do=view&mid=1639