这时有人看到这种程序会想, buf溢出之后, 如果控制得当, 不是可以覆盖返回地址吗, 也就是说可以覆盖PC指针, 执行代码....因为金丝雀比较敏感脆弱, 以前人们在进入煤矿的时候会拿一只金丝雀在手上, 用来检测 一氧化碳等有毒气体. 在环境异常时, 金丝雀会比人先出现反应, 可以用来作为一个警告信号....所以只要在foo中将打印内容控制为canary的地址(注意不要破坏canry), 并且通过泄露的信息, 在利用bar时便能成功绕过canary的检测....对于一两条指令还好, 分分钟可以找到匹配的地方, 可对于较多的指令, 就没那么容易找到完整匹配了. 因此, 聪明的黑客想了个办法, 我们不是可以覆盖栈空间吗?...is ON
我们的计划分为两步, 第一步和之前绕过NX时Return-to-libc类似, 还记得之前让大家 记住的那个地址吗, 就是我们填充为BBBB的那个.