【二进制安全】printf之任意读与写
前言 新手入门pwn,对于各位表哥在writeup中写的格式化字符串漏洞不是很理解,查阅网上资料发现大多都是以printf来深入讲解格式化字符串漏洞的原理,故作此文来探讨printf使用不当产生的漏洞,有不正确的地方,望大佬可以指出来。 printf剖析 printf是C语言中的输出函数,包含在头文件stdio.h文件中,功能是按规定格式向输出设备(一般为显示器)输出数据,并返回实际输出的字符数,若出错,则返回负数。printf函数的原型为: # include <stdio.h>intprintf(constchar*format,...); printf的一般格式有: 1) printf("字符串\n"); 2) printf("输出控制符",输出参数); 3) printf("输出控制符1 输出控制符2…", 输出参数1, 输出参数2, …); 4) printf("输出控制符 非输出控制符",输出参数); 由函数原型我们可以知道printf函数的第一个字符指向一个format字符串(格式化字符串),后面再不定的跟着一些参数。常见的格式符如下: %c:字符%d:十进制...