- 对于Canary虽然每次进程重启后Canary不同,但是同一个进程中的不同线程的Cannary是相同的并且通过fork函数创建的子进程中的canary也是相同的,因为fork函数会直接拷贝父进程的内存
- 最低位为0x00,之后逐次爆破如果canary爆破不成功,则程序崩溃;爆破成功则程序进行下面的逻辑由此可判断爆破是否成功。
- 我们可以利用这样的特点彻底逐个字节将Canary爆破出来。
IDA反汇编可知程序中含有fork函数,可进行爆破canary
fun函数中存在栈溢出
在fork函数处下第一次断点
在canary压栈处下第二次断点
- 即可查出canary与ebp之间的偏移位置;
- buf与ebp之间的偏移同理