格式化字符串
特点:
可以看查任意地址内容
%p 或 %{num}$p
可以任意写地址
%n 或 %{num}$n 须:栈中拥有指针
书写格式为 %{addr}c%{num}$n (一般不行 得逐字节写入)
即:%{addr}c%{num}$hhn
例如:写入0x40158a 到 stack_chk_fail_addr 中


关于stack_chk_fail
是canary保护中,如果xor失败就运行
栈中的canary 在rbp前的一段以00结尾的数 十分明显
printf的输出漏洞
printf输出字符串遇到/0()才会终止。

例:当读进0x100个a时末尾便不带/0,print(%s),便会显示0x100后的栈中数据,如果刚好时push的ebp的话,可以刚好泄露栈中地址
关于fmtstr的使用

此题可以采用在bss段和栈中同时写入达到使用的目的