BJDCTF_r2t4
考点:用格式化字符串写__stack_chk_fail 函数来 bypass canary
由于涉及到格式化字符串漏洞的利用,所以基本原理和利用方法要先有一定的了解。推荐先阅读CTF-wiki:
1.首先检查程序的基础信息
64位程序,可以看到开启了NX和Stack防护
2.运行程序,对程序功能有基本了解
程序基本功能:对用户输入对内容进行输出
3.用ida打开进行分析
这里截取了关键部分对代码
首先在主函数中我们可以非常清楚的看到格式化字符串漏洞 -> printf(buf, buf);
并且经过分析可以发现还存在栈溢出漏洞 -> read(0, buf, 0x38uLL);
,但是由于此程序开启了Stack保护,所以我们想要溢出就必须绕过Stack防护。要绕过Stack防护最先想到的就是泄漏canary。因为这里有格式化字符串漏洞,所以想要泄漏canary并不难。但要实现攻击我们需要先泄漏后溢