首页 > 编程语言 >2022-2023-1 20221318 《计算机基础和程序设计》第十三周学习总结

2022-2023-1 20221318 《计算机基础和程序设计》第十三周学习总结

时间:2022-11-25 23:45:04浏览次数:68  
标签:字符 gcc 20 NX test 2022 2023 字符串 20221318

作业信息
这个作业属于那个班级 https://edu.cnblogs.com/campus/besti/2022-2023-1-CFAP
作业要求 https://www.cnblogs.com/rocedu/p/9577842.html#WEEK13
作业目标 学习《C语言程序设计》第12章
作业正文 https://www.cnblogs.com/ni-yidan/p/16913050.html

教材学习内容总结
在《C语言程序设计》第十章“字符串”中,
* 字符串常量————一串以'\0'结尾的字符在C语言中被看作字符串,用双引号括起的一串字符是字符串常量,C语言自动为其添加'\0'结束符
* 字符串的储存————C语言没有提供专门的字符串数据类型,使用字符数组和字符指针来处理字符串。
1.字符数组的初始化

* 字符指针————字符指针就是指向字符串首地址的指针

pStr是一个指向常量存储区中的字符串的指针变量,而字符串保存在只读的常量存储区,可修改pStr的值(指向),但不可以对它所指向的存储单元进行写操作.

数组名str的值不可修改,是地址常量,而数组中存储的字符可以被修改。例如,str[0] = 'W';
* 字符串的访问和输入/输出
1.按字符逐个输入/输出
2.按字符串整体输入/输出
gets(str);
puts(str);
注:getchar(); /* 读走输入缓冲区中的回车符 */
* 字符串处理函数

strlen(字符串); ————计算字符串长度(不包括\0的实际字符的个数)
strcpy(目的字符串, 源字符串); ————字符串复制(例如,strcpy(str2, str1); 注意复制的方向!str2必须足够大!)
strcat(目的字符串, 源字符串); ————字符串连接(例如,strcat(str2, str1); str2必须足够大!)
strcmp(字符串1, 字符串2); ——————字符串比较(字符串不能用>,<,==比较大小,if (strcmp(str2, str1) == 0))————当出现第一对不相等的字符时,就由这两个字符决定所在字符串的大小,返回其ASCII码比较的结果值
* 向函数传递字符串————既可用字符数组作函数参数,也可用字符指针作函数参数。


从函数返回字符指针

教材学习中的问题
我对缓冲区溢出攻击并不是很了解,在网上查询了相关资料后得知其相关原理:


通过缓冲区溢出,覆盖返回地址。返回地址跳转到我们栈中恶意代码。这样便完成了缓冲区溢出攻击。
在查找资料,有一下几种实现的方法,首先应关闭防护机制:
1.内存地址随机化机制
0 - 表示关闭进程地址空间随机化。
1 - 表示将mmap的基址,stack和vdso页面随机化。
2 - 表示在1的基础上增加栈(heap)的随机化。
sudo sysctl -w kernel.randomize_va_space=0
2.CANNARY(栈保护)
canary是一种用来防护栈溢出的保护机制。其原理是在一个函数的入口处,先从fs/gs寄存器中取出一个4字节(eax)或者8字节(rax)的值存到栈上,当函数结束时会检查这个栈上的值是 否和存进去的值一致
gcc -o test test.c // 默认情况下,不开启Canary保护
gcc -fno-stack-protector -o test test.c //禁用栈保护
gcc -fstack-protector -o test test.c //启用堆栈保护,不过只为局部变量中含有 char 数组的函数插入保护代码
gcc -fstack-protector-all -o test test.c //启用堆栈保护,为所有函数插入保护代码
3.NX(DEP)
NX即No-eXecute(不可执行)的意思,NX(DEP)的基本原理是将数据所在内存页标识为不可执行,当程序溢出成功转入shellcode时,程序会尝试在数据页面上执行指令,此时CPU就会抛出异常,而不是去执行恶意指令。
gcc -o test test.c // 默认情况下,开启NX保护
gcc -z execstack -o test test.c // 禁用NX保护
gcc -z noexecstack -o test test.c // 开启NX保护

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
第一周 0/0 3/3 20/20
第二周 105/105 2/5 20/40
第三周 150/255 2/7 20/60
第四周 210/465 2/9 20/80
第五周 280/745 2/11 20/100
第六周 320/1065 1/12 20/120
第七周 400/1465 1/13 20/140
第八周 400/1865 1/14 20/160
第九周 400/2265 1/15 20/180
第十周 400/2665 1/16 20/200
第十一周 400/3065 1/17 20/220
第十二周 360/3425 1/17 20/240
第十三周 360/3785 1/18 20/260

标签:字符,gcc,20,NX,test,2022,2023,字符串,20221318
From: https://www.cnblogs.com/ni-yidan/p/16913050.html

相关文章

  • NOIp2022 rp++
    rp++!mark:复赛时要记住的30句话如何在联赛和省选中进行暴力和骗分?比赛进行的时候你应该干什么?打满暴力,暴力不挂!剪枝多跑出来一点!希望能蹭到三倍队线!......
  • Atlassian-bitbucket RCE (CVE-2022-43781) 漏洞分析记录
    前言距离上次写文章居然过去两年多了,这两年多忙于各种事务,环境搭建官方仓库维护了各种版本的Bitbicket,我们根据漏洞描述选择一个可以触发漏洞的版本即可。然后根据镜像......
  • 2022-2023-1 20221421 《计算机基础与程序设计》第十三周学习总结
    作业信息班级链接:https://edu.cnblogs.com/campus/besti/2022-2023-1-CFAP作业要求:https://www.cnblogs.com/rocedu/p/9577842.html#WEEK13作业正文:2022-2023-120221312......
  • day20221125周五今天学了什么知识?节约时间 seize the time
    day20221125周五今天学了什么知识?节约时间seizethetime买纯牛奶。 公司的网不能看课的话,那就下载下来看。自己没钱,存钱。然后吃蔬菜对身体好。节俭和勤劳是美德。......
  • NOIP2022 游记
    Day0摆烂。Day1来到了考场床,开始睡觉。睡了一上午,醒来之后发现已经12:30了,赶紧开题,发现没题,剩下的时间就睡觉了。期望得分0+0+0+0=0。不过CCF数据水,......
  • 2022NOIP A层联测35(结局)
    T1:《弹珠游戏》\(n\)个人,\(3n\)个弹珠,分别为\(R,G,B\),每个人三种颜色分别取一个,不满意度为编号极差,求所有人不满意度和最小时的方案数。壮压计数,至于之前每种颜色的......
  • 2022.11.21-27 训练小记
    2022/11/21-27训练小记CF1761D.CarryBit赛时感觉很不可做,对着题解想明白的qwq下文起用\(a_i,b_i\)表示其二进制表示下的第\(i\)位(1-indexed)。人类智慧地想到记......
  • HDC 2022 开发者主题演讲与技术分论坛干货分享(附课件)
       11月4日-11月6日,HDC2022在东莞成功举办,这是一场大规模落地的思维与技术的碰撞,众多业内专家到场,共话未来。其中,开发者主题演讲围绕增强的声明式开发体系,通过一个De......
  • HDC 2022 开发者主题演讲与技术分论坛干货分享(附课件)
     11月4日-11月6日,HDC2022在东莞成功举办,这是一场大规模落地的思维与技术的碰撞,众多业内专家到场,共话未来。其中,开发者主题演讲围绕增强的声明式开发体系,通过一个Demo......
  • CSP-S 2022 题解
    CSP-S2022题解前言由于打的肽粉了,NOIP考前补了一下题。T1:假期计划题目链接:luoguP8817题目大意给你一个无向图,然后要你规划出一条路径,其中起点和终点都是1号点,......