为什么没有正确溢出?

时间:2016-08-08 01:56:34

标签: c stack-overflow stackframe

我试图完成以下功能:

void function(int param){
    char overflow[32];
    gets(overflow);
}

我希望控制整数参数。这是一个x86平台。

这就是我作为字符串溢出的内容:

python -c "print '\x41'*33 + '\x41'*4 + '\x41'*4 + '\xFF\xFF\xFF\xFF'"

这些是我的假设,请纠正它们:

  • 为字符串分配33个字节(32个字符加空字节)
  • 最后一个EBP地址的4个字节
  • 返回地址的4个字节
  • 整数参数的4个字节(我希望\ xFF出现在哪里)

但是,这不起作用。我错过了什么?

完整代码:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void func(int key){
    char overflowme[32];
    printf("overflow me : ");
    gets(overflowme);   // smash me!
    if(key == 0xcafebabe){
        system("/bin/sh");
    }
    else{
        printf("Nah..\n");
    }
}
int main(int argc, char* argv[]){
    func(0xdeadbeef);
    return 0;
}

0 个答案:

没有答案