1.程序分析
一.程序分析
开始以为是堆溢出,其实是栈溢出+格式化字符串漏洞
查看保护机制
开了canary,所以我们要绕过canary
1.格式化字符串漏洞
2.溢出点
所以我们的解题思路为:‘
1.利用格式化字符串漏洞泄露Canary
2.利用格式化字符串漏洞构造ROPchain泄露libc基地址,求出system地址
3.利用Onegadget得到’/bin/sh’地址,getchell
二. 漏洞利用
1.泄露Canary
关于Canary的原理这里不再赘述,这里得到Canary在ebp-8处,接下来找到canary距离格式化字符串的偏移
我们在0x400915处下断点,运行
之后单步运行到这里
查看rax的值,此时就是Canary
我们的目的是得到Canary距fmt的偏移,继续向下跟踪
可以得到Canary偏移为15
2.onegadget
好用https://github.com/david942j/one_gadget
exp: