Pwn 学习第五课打卡!
原提问者:hackbs 2020-7-12
0x00 概述:
[
printf
格式化字符串并且在控制台中输出,
最常用的方式
{
#include <stdio.h>
int main(int argc,char *argv[])
{
//格式化整型、字符串、地址输出
printf("%d-%s-%p",123,"123",0x123456);
}
}
]
0x01:现成漏洞的原因
{
printf也是一个函数,我们知道在汇编里面,其实就是CALL 一个地址
,然后CALL地址前,都会压入(push)
参数进去,push的顺序是先进后出
,先把函数参数的最后push进去,然后最后把第一个参数给push进去。
//所以在调用Printf函数时候,如果格式化输出,后面没有跟参数比如
printf("%s");
#首先printf会进行格式化字符串的解析,从参数里面获取和符号进行匹配,然后输出到屏幕上
#如果说没有参数,那么CALL的上一层栈地址数据就会被输出来(导致泄漏)!
}