栈溢出保护及整数保护
说点什么
之前觉得学习原理很没有用,不如实践去执行
原理很多、很杂,很没用
真正去做时发现,原理是能做、不能做
从根本上指导实践,减少100%的试错时间
知行合一…
Canary原理
Canary是在栈的尾部插入值,函数返回时检测canary是否改变,判断是否溢出
利用gcc编译:
gcc … -fstack-protector
如果Canary检查到,会调用__stack_chk_failed函数
绕过:
绕过方法1
至少利用两次栈溢出,才可以使用绕过方法1
V3后代表开启canary,所以v3是canary字节
第一次打印canary,第二次利用
buf距离ebp,10C个字节,v3距离ebp,C个字节,所以buf为100个字节
gdb:
dias main
disas vuln