Canary
# stack_chk_fail
劫持 stack_chk_fail
改写 stack_chk_fail 的 got 表后故意触发 stack_chk_fail,控制程序流。
SSP leak
通过溢出改写 argv[0] 指针的值,可用于泄露内存指定地址中的值。
# 泄露 canary
fork 爆破
覆盖最低位
覆盖 canary 的最低位后将其打印。
接收泄露的 canary
- 64 位程序
canary = u64(io.recvuntil('\x30')[-8:-1].rjust(8, '\x00'))
log.success('canary -> ' + hex(canary))
# 调试查看 canary
在程序中对 canary 进行检查的代码处下断点,当程序运行到此处时便可从对应的寄存器中看到 canary 的值。