C语言 存储类型 类型 作用域 生命周期 存储位置 auto变量 一对{}内 当前函数 栈区 static局部变量 一对{}内 整个程序运行期 初始化在data段,未初始化在BSS段 extern变量 整个程序 整个程序运行期 初始化在data段,未初始化在BSS段 static全局变量 当前文件 ...
分类:
编程语言 时间:
2020-02-28 20:38:22
阅读次数:
90
常规检查 题目分析 两个 read 函数,第一个 buf 只能栈溢出至 ret ,第二个 bank 在 bss 段中,所以思路很明显,要栈迁移到 bss 段中 有 puts 函数和 read 函数,所以我们可以先用 puts 函数泄露出 libc 地址,然后用 read 函数写入 有万能函数,能让我 ...
分类:
其他好文 时间:
2020-02-23 09:58:30
阅读次数:
143
花了好多天,终于把这个题彻底弄懂了。。。自己太菜了 下载文件,首先checksec检查一下保护。 只开启了堆栈不可执行,接下来拖到IDA看一下C的伪代码。 大致先让你输入,然后再次让你输入。 第一次输入的话,会将输入的数据保存到bss段,第二次是向栈中输入数据,并且可以溢出。经过计算,正好可以溢出到 ...
分类:
其他好文 时间:
2020-02-18 13:32:01
阅读次数:
98
objdump -S,如果有源程序的话,将源程序与汇编代码混合在一起。 使用该选项时,输入的目标文件需要有调试信息,即用gcc -g生成的目标文件才可以,因为,调试信息中采用源程序信息。 objcopy -O binary,该选项可以直接将text,data,bss段都拷贝出来,似乎不需要单独的拷贝 ...
分类:
其他好文 时间:
2020-02-16 14:47:24
阅读次数:
54
main.c int enable; int test = 1; int main() { return 0; } int add() { return 0; } View Code bss段在elf中虽然size是4,但并不占filesize,节头表如下图所示 程序头中,项目2的文件大小为4(4字 ...
分类:
其他好文 时间:
2020-02-09 20:06:52
阅读次数:
65
1. 简而言之,数组定义在函数中时,占用的内存来自栈空间,栈空间是在进程创建时初始化的,有固定的大小,一般很小,所以太大的数组会耗光栈空间。全局变量一般分配在数据段,可以比较大。 2.BBS段、数据段、代码段、堆与栈及5大内存分配 BSS段(Block Started by Symbol): BSS ...
分类:
编程语言 时间:
2020-02-04 10:30:37
阅读次数:
97
操作系统如何加载程序 1.用户编写完代码后,通过编译器将编译为数据段、代码段、堆栈段、bss段,由链接器链接为装入模块 2.用户通知操作系统要运行的程序 3.操作系统根据路径找到对应的程序,检测程序的头部,找到代码段和数据段的位置 4.文件系统根据这些段的位置找到对应的磁盘块 5.操作系统创建进程( ...
分类:
其他好文 时间:
2020-01-04 10:52:35
阅读次数:
102
BSS段清零的原因是因为这个段是BSS 要说为什么要有BSS的话,历史就比较久远了。 BSS段我所知道的起源是Unix最初的时候(当然,不排除可能有更早的情况)。变量分两种:局部变量、全局变量。 根据C语法的规定,局部变量不设置初始值的时候,其初始值是不确定的,局部变量(不含静态局部变量)的存储位置 ...
分类:
其他好文 时间:
2019-12-22 13:01:53
阅读次数:
98
babyheap_fastbin_attack 首先检查程序保护 保护全开。是一个选单系统 分析程序 创建一个堆,将堆的信息(大小,是否使用,指针)存放在bss段中,并且将内容写入堆中 打印堆的内容,长度由一开始定义时决定 删除堆,将标志位和size全部清0但是指针没有清0,可以达到再次利用的效果 ...
分类:
其他好文 时间:
2019-12-20 01:16:41
阅读次数:
158
1、概念解析(1)存储类 a.存储类就是存储类型,也就是描述C语言变量在何种地方存储。 b.内存有多种管理办法:栈、堆、数据段、bss段、.text段......一个变量的存储类属性就是描述这个变量存储在何种内存段中。 c.譬如:局部变量分配在栈上,所以它的存储类就是栈;显式初始化为非0的全局变量分 ...
分类:
编程语言 时间:
2019-11-13 16:18:37
阅读次数:
76