安全
文章平均质量分 78
kkzz1x
真.新手起步
Java + CPP + Rust(新人),计算机科学热爱者
展开
-
【软件与系统安全】堆溢出
堆与栈的区别:分配器 glibc malloc 分配器 起初数据段之上是没有堆的,进程运行在栈上;malloc才创造堆多线程情况下arena的分配 主线程分配arena,线程1、2分别分配arena,那么线程3需要需要重复使用已经分配好的arena分配器循环遍历arena,如果lock成功(也就是有线程如果没有使用堆空间),那么该线程的arena供线程3使用。若没有找到可用arena,则将线程3阻塞,直到找到可用的位置。 (个人思考: 所以对于多线程编程,是一定要及时free堆空间的,否则内存泄露,有线程会原创 2022-06-22 23:27:18 · 1065 阅读 · 1 评论 -
【软件与系统安全】整数溢出、格式化字符串、数组越界访问漏洞
文章目录一、整数溢出整数表示举例防护二、格式化字符串漏洞三、数组越界访问漏洞产生举例 一、整数溢出 整数表示 原码、反码、补码表示: 对于正数原码、反码以及补码是其本身。负数的原码是其本身,反码是对原码除符号位之外的各位取反,补码则是反码加1。 CF是无符号溢出标志,OF是有符号溢出标志。即使有符号数相加/相减导致了CF=1也没什么意义,不能说明结果的正确与否。此时,OF=1,则说明结果溢出,出现错误;OF=0,说明结果正确。这个过程根本和CF没关系,CF=1/0,都不会影响。 这说明指针类型不同,对原创 2022-05-20 23:08:34 · 1511 阅读 · 0 评论 -
【软件与系统安全】栈溢出
一、进程的内存布局 代码段、初始化的变量和未初始化的变量在编译时就已经确定空间。 而栈和堆区则在程序运行时才确定。 堆:从低地址空间到高地址空间增长 栈:从高地址空间到低地址空间增长。 二、栈的工作原理 esp:帧指针,始终指向栈帧顶部 eip:指令执行的地方 ebp:栈基指针,指向当前栈帧的底部。 栈的作用:为函数的调用和执行维护存储结构 EBP存放当前栈的栈基地址,减可以访问当前函数的一些局部变量,加可以访问foo(某)函数局部变量 三、栈溢出 从缓冲区开始 缓冲区是内存的一部分空间,用来缓冲输入原创 2022-05-19 16:25:22 · 940 阅读 · 0 评论