首页
论坛
课程
招聘
printf漏洞概述以及调试

零基础入门PWN

该课程为付费课程,如需学习完整课程请购买
作者: Roger
发布时间: 2020-2-15
最后修改: 2020-7-10
2670

上一节 :
下一节 :
章节评论 (1)
hackbs 2020-7-12
 举报
Pwn                                学习第五课打卡!
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的上一层栈地址数据就会被输出来(导致泄漏)!
}