提问者:头像不好看了 2020-10-15
他怎么防止缓冲区溢出的?假如说,我地址跳转或者覆盖成了另一个函数,获取到了shell,这个cookie还有用吗?还是说这个cannery保护是保护什么的?
群里回复您了,我把另一个同学的解释发给你:这个是塞在返回地址前的,相当于守卫,只允许一种人过,就是自己人,要想越过门卫进入城内,就必须先伪造成自己人,才能进去。这个保护是针对变量的,当有写入变量的时候这个保护才有用。只有允许你写数据的时候,这个保护才开启。为了防止你过多的写数据,覆盖它的返回地址。它在返回地址前面的4(32位)字节里面填入随机数据,会在你向里面写时候,并且你已经写完的时候检查。如果你数据写过了,或者已经写到返回地址处了,这个随机数就不正确,程序就会直接宕机报错崩溃