lun4t1c@home:~$

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 的值。