格式化字符的漏洞利用
2023/8/26大约 1 分钟
1.%n,%hn,%hhn
这个格式化字符串的是格式化字符串漏洞利用的核心所在,%n的作用就是把已经成功输出的字符个数写入对应的整形指针参数所指的变量。%n(一次写入四个字节),%hn(一次写入两个字节),%hhn(一次写入一个字节)。
%hh的作用是限定输出格式为8位,即一个字节;
%h的作用是限定输出格式为16位,即两个字节;
%l的作用是限定输出格式为32位,即四个字节;
%ll的作用是限定输出格式为64位,即八个字节;
2.%a
%a是以double型的16进制格式输出栈中变量,当程序开启了FORTIFY机制后(gcc -D_FORTIFY_SOURCE=2 -01),程序在编译时所有的printf函数都被_printf_chk替换了,__printf_chk和printf有两点不同:(1)不能使用%n
