C 使用参数调用两个函数的缓冲区溢出
我正在学习BOF,并且我理解了如何使用它来调用带参数的函数,但是如何调用两个带参数的函数呢。 对于使用参数调用一个函数:首先,我们在EIP位置输入函数的地址,然后输入返回地址,然后输入参数。 在这段代码中,我想通过调用function1然后调用function2来调用secret函数,我该怎么做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
#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()插入正确的参数和加法位置。我不明白这是如何导致缓冲区溢出的,我没有看到任何循环或递归调用。我错过了什么吗?@sravsstrcpy(buff,argv[1])代码>可以在分配的内存之外写入。@MikeCAT你是对的,我只是忽略了它,但如果是这样,那么为什么要编写所有这些函数呢?我的意思是说,如果使用strcpy本身实现了BOF目标