在linux中,有很多方法可以绕过除金丝雀之外的安全机制(如NX,ASLR)。实际上,我发现堆栈canary是由Linux内核在/arch/arm/include/asm/stackprotector.h/boot_init_stack_canary()函数中生成的。随机数最后由extract_entropy函数生成,并且它是相关的对于环境噪声,如键盘,中断的时间间隔。
在利用堆栈溢出漏洞时,有没有办法绕过canary安全机制?
答案 0 :(得分:1)
一般来说,击败金丝雀的技巧是使用正确的值。通常,可以使用information leak
在将缓冲区溢出到堆栈之前获取正确的值,或者在某些情况下再次启动进程,可以brute force
正确的值。