继承
继承让我们能依据另一个类来定义一个类,这种特性也很容易创建和维护一个程序,从而达到了重用代码功能和提高执行效率的一个效果。
当创建一个类时,无需重新编写新的数据成员、成员函数,只需指定该类继承一个已有类的成员即可,
上述已有类称为基类,新建类则为派生类。
语法:
a.基本:class子类(派生类) : 继承方式 父类(基类)
class A{ public: int a; protected: int b; private: int c;};
b.共有继承:基类的公用成员和保护成员在派生类中保持原有访问属性,其私有成员仍为私有。
class B : public A{ public: int a; protected: int b; //不可访问: int c;};
c.私有继承:基类的公用成员和保护成员在派生类中变为私有属性,其私有成员仍为私有。
class B : private A{ private: int a ...
重启后的第一篇文章…现在是2025-06-01的凌晨一点,( ̄▽ ̄)”确实,是时候重新审视自己了,唉…
程序的内存模型1.内存四区
代码区、全局区、栈区、堆区(代码区和全局区在程序执行前就有)
2.简单介绍
2.1 代码区:
存放CPU执行的机器指令
代码区是共享的,也是只读的。
2.2 全局区:
存放了全局变量(在main函数之外)、静态变量(前面有static)
其中还包含了常量区。(包括字符串常量、const修饰的全局常量)
该区的数据在程序结束后由操作系统释放。
2.3 栈区:
由编译器自动分配释放(函数执行完)
存放函数的参数值(形参)、局部变量等(不要返回局部变量的地址!!)
2.4 堆区:
由程序员分配释放,若不释放,则被系统回收
主要用new关键字在该区开辟数据,用delete关键字释放内存。
new返回的是数据类型的指针。
释放数组时(eg. delete[] arr;)
构造函数&析构函数
构造函数用于初始化对象,同时为对象的成员属性赋值;析构函数用于清理对象,同时在对象销毁前调用执行清理工作。
语法
2.1 构造函数:类名(){}
2.1.1.构造函数,没有返 ...
题目描述WEB入门5-请求头伪造
在发生HTTP请求时,往往会带上许多请求头,这些请求头是可以被我们所控制的,倘若服务端没有进行校验而轻易相信,便会出现安全问题,试试解决这个问题吧!
解决1.将cookie中的guest权限改为admin,同时增加题述中的发出请求的用户的电子邮件地址(From:…)
2.接着增加其他题述中的请求头:X-forwards-for(从内网访问:127.0.0.1)、Via(通知中间网关或代理服务器地址,通讯协议)。
3.得到flag
请求头相关链接[CTF——HTTP发送头Headers整理](CTF——HTTP发送头Headers整理_ctf easyheader-CSDN博客)。
CTF相关
未讀文件上传漏洞之前做了CTF的一道题,考察了文件上传,在此复习下文件上传。
文件上传漏洞原因:1.服务器配置不当2.文件上传限制被绕过3.开源编辑器的上传漏洞4.文件解析漏洞导致文件执行5.过滤不严或被绕过
可能存在漏洞的位置:1.图片上传功能 2.头像上传功能 3.文档上传功能
文件上传检测方式:1.客户端JS检测(文件扩展名)2.服务端MIME类型检测(content-type内容)3.服务端目录路径检测(跟path参数相关)4.服务器文件扩展名检测(跟文件extension相关)5.服务端文件内容检测(内容是否合法、是否含有恶意代码)
绕过客户端检测:1.原理:在上传页面里含有专门检测文件上传的JS代码,最常见的则是检测文件类型和扩展名是否合法2.方法:在本地浏览器客户端禁用JS即可3.测试:靶场
绕过服务端检测:1.服务端代码检测三点:MIME类型、文件后缀、文件内容2.常见MIME类型 1.HTML、txt、pdf 2.Word、png、gif 3.MPEG、AVI3.绕过MIME类型检测 1.原理:检测图片类型文件上传过程中http包的Content-Ty ...
0.前言终身学习,对每个人都可能是必要,对于软件工程师尤其如此。在IT领域,变化是永恒的,新技术不断被发明,旧技术不断更新。因此,软件工程师不会只学习一次编程,还可能要学习许多新的编程语言和框架。
但是,我们学习并不意味着我们理解了如何学习,人们不能凭直觉理解记忆和学习是如何工作的。认知心理学和关于编程的教育为我们如何学习提供了强有力的见解。本文阐述了关于学习的10件事,这些发现适用于软件工程师,并有着实际的意义。
1. 人的记忆不是由比特组成的记忆是学习的核心,学习意味着一个人的长期记忆发生了变化。软件开发人员都熟悉计算机内存的惊人力量,在那里可以存储一系列的比特,然后通过CPU的控制调整为正确的比特序列。尽管人的记忆有其相似性,但它既不准确,也不可靠。
由于人类记忆的生物学复杂性,可靠性是一个复杂的问题。对于计算机内存,我们使用两种基本操作: 读和写。读取计算机内存不会修改它,也不管写入和读取之间经过多少时间。人的记忆似乎有一个“读取和更新”的操作,在这个操作中,获取一段记忆可以加强和修改它。这种修改更有可能发生在最近形成的记忆上。由于这种修改的可能性,事实不存在于确定已知或未知的 ...

