canary_pie
canary_pie
Stack Canaries (取名自地下煤矿的金丝雀,因为它能比矿工更早地发现煤气泄漏,有预警的作
用)是一种用于对抗栈溢出攻击的技术。
其原理是在的入口处,从fs/gs寄存器
中取出一个4字节(eax)或者8字节(rax)的值存到栈上,当函数结束时会检查这个栈上的值是否和存进去的值一致。
Canary bypass的姿势
格式化字符串绕过canany
通过格式化字符串读取canary的值
Canary爆破(针对有fork函数的程序)
fork作用相当于自我复制,每一次复制出来的程序,内存布局都是一样的,当然canary值也一样。那我们就可以逐位爆破,如果程序崩溃了就说明这一位不对,如果程序正常就可以接着跑下一位,直到跑出正确的canary
Stack smashing(故意触发canary_ssp leak)
劫持_stack_chk_fail
修改got表中 stack chk fail函数的地址,在栈溢出后执行该函数,但由于该函数的地址被修改,所以程序会跳转到我们想要执行的地址
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Randolfluo's blog!