回 帖 发 新 帖 刷新版面

主题:系统堆栈问题

#include <stdio.h>
#include <stdlib.h>

void fun(int a,int b,int c)
{
    char buf1[5];
    char buf2[10];
    char *f;
    f=buf1;
    f+=12;
    (*f)+=8;
}

void main()
{
    int x;
    x=0;
    fun(1,2,3);
    x=1;
    printf("%d",x);
}
谁能解释一下这个程序的系统栈的使用过程,他是怎么绕过X的再赋值的?

回复列表 (共2个回复)

沙发

我这个菜鸟没看懂什么意思  只是看到了栈溢出

板凳

思路:通过栈溢出(f+=12),修改了eip的值((*f)+=8),达到控制程序运行。
但运行结果并没达到。
可以看关于堆栈溢出攻击的相关资料。

我来回复

您尚未登录,请登录后再回复。点此登录或注册