C 语言中的 printf() 函数被用来根据格式打印字符串。它的
第一个参数被称为格式化字符串,它定义了字符串应该如何被格式化。
格式化字符串使用占位符,这些占位符由 % 字符标记,供
printf() 函数在打印时填充数据。格式化字符串的使用
不仅限于 printf() 函数,许多其他函数也使用格式化字符串。一些
程序允许用户提供格式化字符串的全部或部分内容。如果这些
内容未经过滤,恶意用户可以利用这个机会使程序运行
任意代码。这样的问题被称为格式化字符串漏洞。
本实验的目标是让学生通过将课堂上学到的关于漏洞的知识付诸实践,亲身体验格式化字符串漏洞。 学生将获得一个带有格式化字符串漏洞的程序,他们的任务是利用这个漏洞以实现以下目的: (1) 使程序崩溃,(2) 读取程序的内部内存,(3) 修改 程序的内部内存,以及最严重的,(4) 使用受害者程序的权限注入并执行恶意代码。