相信每位程序员都写过如下代码:
1 | #include<stdio.h> |
是的,这应该是每个程序员写的第一个程序,其中printf()
,也是一个在C语言中的较为脆弱的函数,我们今天就来探讨一下格式化字符串漏洞。有一点要说的是由于现在的很多编译器都变得更加智能且更加注重安全性,格式化字符串等容易出现问题的函数都会由编译器自动为其添加相应的check函数从而保证函数的安全性,因此格式化字符串漏洞是由很小的可能性会出现在真实的生产环境中的,可能出现这个漏洞最多的情形就是大大小小形式各异的CTF赛题中了,但是由于此漏洞历史悠久并且较为有趣,如果产生此漏洞的话危害也不小,还是有必要学习一下的。