经过一段时间的研究,终于接触到Canary了,不容易啊
拿到本题查看保护

开了NX和Canary两种栈保护,我们运行一下出现,看一下程序逻辑:

根据我们对英语强大的理解 (翻译软件的腻量)我们可以看到1标题是栈溢出漏洞函数,2是格式字符串漏洞函数,3为退出,既然他都告诉我们了,我们也不用客气直接用就可以了。
我们可以用格式字符串漏洞泄露Canary的值,然后再进行简单的栈溢出,把Canary填入即可。
查看IDA可以发现,程序留了后门:



我们知道,通过格式字符串漏洞泄露参数,要知道输入参数距离我们要泄露的参数的位置,这里是23.
为什么是23呢?
首先,我们可以看到伪C代码: