跳转至

Canary绕过

Canary是一种用于增强程序安全性的防御机制,主要用于防范缓冲区溢出攻击。

基本原理是,在每次函数调用建立栈帧时,系统会在栈上的局部变量和函数返回地址之间插入一个随机生成的Canary值。在函数返回前,程序会检查Canary是否被改变。如果检测到Canary被修改,则意味着发生了堆栈溢出,程序会立即触发安全机制。

泄露

  1. 通过格式化字符串漏洞等方法,将Canary值从内存中读出。
  2. Canary的最低字节通常是\x00,这是为了让字符串处理函数无法处理它。如果有办法覆盖这个字节,就可以利用其他方法打印出Canary。