20250616-20250622

20250616-20250622

附件:
【超级会员V5】通过百度网盘分享的文件:20250616-20250622
链接:https://pan.baidu.com/s/1Ji_ww_Nc6y559UgTazQZNA?pwd=padm
提取码:padm

题目复现

[长城杯 2024]anote

image-20250622095935998

学习笔记

一、程序在内存中的分布

​ 程序在内存中的分布: BV1wz4y1D7Gq

​ 记录记录程序在内存中的分布(以4G为例)

低地址3G
128MB的保留区(0-255)
.text代码段:程序代码指令
.rodata只读数据段(常量)
.data初始化数据段(初始化的全局变量)
.bss未初始化数据段(未初始化的全局变量)
heap堆(动态分配的内存)
mmap映射区(提供给用户的虚拟内存空间)
共享数据区
stack栈

高地址1G
kernel内核空间

二、pwn相关

1、常识

​ glibc内存管理:ptmalloc2

​ linux内存管理的基本思想:内存延迟分配

2、heap操作相关函数

​ (1)brk()是系统调用、sbrk()是库函数。C语言的动态内存分配的基本函数是malloc()

​ 在liunx中的实现是:malloc()函数调用库函数sbrk(),sbrk()的实质是调用brk()函数。brk()是一个简单的系统调用,只是简单的改变mm_struct结构体成员变量brkd的值

​ (2)函数原型:

#include
int brk(void * addr);
void * sbrk(intptr_t increment);  //当参数increment为0时,sbrk()返回的是进程当前的brk值,increment为正数时扩展brk值,当increment为负数时收缩brk值

Glibc内存管理-ptmalloc2 - 坚持,每天进步一点点 - 博客园

posted @ 2025-07-04 10:08  SX住一  阅读(4)  评论(0)    收藏  举报