2019西湖论剑预选赛story

  • 会飞的鱼
  • 1 Minutes
  • April 19, 2019

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: