C 使用参数调用两个函数的缓冲区溢出

C 使用参数调用两个函数的缓冲区溢出,c,buffer-overflow,C,Buffer Overflow,我正在学习BOF,并且我理解了如何使用它来调用带参数的函数,但是如何调用两个带参数的函数呢。 对于使用参数调用一个函数:首先,我们在EIP位置输入函数的地址,然后输入返回地址,然后输入参数。 在这段代码中,我想通过调用function1然后调用function2来调用secret函数,我该怎么做 #include <stdio.h> #include <string.h> void function1(int, int); void function2(int); vo

我正在学习BOF,并且我理解了如何使用它来调用带参数的函数,但是如何调用两个带参数的函数呢。 对于使用参数调用一个函数:首先,我们在EIP位置输入函数的地址,然后输入返回地址,然后输入参数。 在这段代码中,我想通过调用function1然后调用function2来调用secret函数,我该怎么做

#include <stdio.h>
#include <string.h>

void function1(int, int);
void function2(int);
void secret();


void function1(int var1, int var2) {
    if(var1 == 0x123456) {
        function2(var2);
    }
}

void function2(int var) {
    if(var == 0xabcdef) {
        secret();
    }
}

void secret() {
    printf("%s\n", "Correct");
}

int main(int argc, char **argv)
{
  char buff[64];
  strcpy(buff, argv[1]);
  return 0;
}
#包括
#包括
无效函数1(int,int);
无效函数2(int);
无效秘密();
无效函数1(int var1,int var2){
if(var1==0x123456){
功能2(var2);
}
}
无效函数2(int-var){
如果(var==0xabcdef){
秘密();
}
}
无效机密(){
printf(“%s\n”、“正确”);
}
int main(int argc,字符**argv)
{
字符buff[64];
strcpy(buff,argv[1]);
返回0;
}

那么您想让BOF本身引起两个函数调用?让
function1()
调用
function2()
还不够吗?function1()调用function2()本身,但我必须为function1()和function2()插入正确的参数和加法位置。我不明白这是如何导致缓冲区溢出的,我没有看到任何循环或递归调用。我错过了什么吗?@sravs
strcpy(buff,argv[1])可以在分配的内存之外写入。@MikeCAT你是对的,我只是忽略了它,但如果是这样,那么为什么要编写所有这些函数呢?我的意思是说,如果使用strcpy本身实现了BOF目标