0x00 过程
我们可以看出:首先是压参数,然后压返回地址,然后压EBP,然后堆栈提升,产生缓冲区,然后压寄存器保护现场。
然后循环填写cc。然后靠ebp的移动实现局部变量在缓冲区里的分配。
/*基于缓冲区溢出的hello world
2016年12月24日22:01:17
*/
#include <stdio.h>
void hello(void)
{
printf("hello world");
}
void fun()
{
int a[5]={1,2,3,4,5};
a[6]=(int)hello;
}
int main (void)
{
fun();
return 0;
}
0x01
溢出分析:如下,既然是输出了helloworld证明了什么?证明了一点:那就是hello函数的地址压给了eip。首先来说:我们执行了溢出,但是编译器应该是不知道,所以