一、格式化字符串漏洞原理
格式化字符串是一种很常见的漏洞,其产生根源是printf函数设计的缺陷,即printf()函数并不能确定数据参数arg1,arg2…究竟在什么地方结束,也就是说,它不知道参数的个数。它只会根据format中的打印格式的数目依次打印堆栈中参数format后面地址的内容
格式字符串漏洞发生的条件就是格式字符串要求的参数和实际提供的参数不匹配。
常见格式化字符串漏洞函数如下:
任意内存读
任意的内存的读取需要用到格式化字符串 %s,其对应的参量是一个指向字符串首地址的指针,作用是输出这个字符串。
在任意内存的读取之前要知道局部变量是存储在栈中,通过所输入的格式化字符串找到输出的参数的位置。
采用%s的方式读整数,需要参考ASCII码表:
任意内存写
任意地址的内存写,通过%n格式字符完成。
%hn 一次性写入2个字节
%hhn
标签:格式化,漏洞,参数,内存,字符串,任意 From: https://blog.csdn.net/qq_67812668/article/details/141144027