Canary绕过¶
Canary是一种用于增强程序安全性的防御机制,主要用于防范缓冲区溢出攻击。
基本原理是,在每次函数调用建立栈帧时,系统会在栈上的局部变量和函数返回地址之间插入一个随机生成的Canary值。在函数返回前,程序会检查Canary是否被改变。如果检测到Canary被修改,则意味着发生了堆栈溢出,程序会立即触发安全机制。
泄露¶
- 通过格式化字符串漏洞等方法,将Canary值从内存中读出。
- Canary的最低字节通常是
\x00,这是为了让字符串处理函数无法处理它。如果有办法覆盖这个字节,就可以利用其他方法打印出Canary。