【学习笔记】CTF PWN选手的养成(三)

atum大佬视频的总结


第三章 课时2  堆漏洞的利用技巧

0X01 基础知识

1、操作系统中的内存布局(Linux)

  • 内核空间&用户空间,堆、栈等;cat /proc/pid/maps
  • 要了解ELF文件结构

2、什么是堆?

  • 数据结构:父节点总大于/小于子节点的特殊的完全二叉树
  • 操作系统:程序在运行时动态申请和释放的内存空间(malloc,realloc,free,new,del等)

3、不同操作系统对堆内存有不同的管理策略,对某些软件(如浏览器)会自己实现堆内存管理

  • 多数Linux发行版(with glibc):ptmalloc/dlmalloc
  • Android/firefox:jemalloc
  • Windows:微软自己实现了一套内存管理机制
  • Linux内核:slab,slub,slob分配器

4、了解内存管理的策略是玩转堆漏洞的关键

5、CTF题中堆管理机制:大多数是ptmalloc/dlmalloc,少数题中自己实现

6、ptmalloc/dlmalloc是glibc的默认内存管理机制,了解它对PWN堆题来说至关重要!

7、强烈推荐:glibc内存管理ptmalloc源代码分析.pdf (阿里巴巴的一位工程师写的)   建议先通读,再用作工具书

8、作业:精读“glibc内存管理ptmalloc源代码分析.pdf  ”的1-27页,粗度28-130页(end)。arena,bin,chunk。Know it and pwn it!

0X02 堆溢出的利用思想与防护策略

1、堆漏洞的利用思想:

  • 破坏堆内存管理的相关数据结构:如arena、bin、chunk
  • 破坏堆内存中的用户数据:覆盖变量指针、函数指针、数据等
  • 一般情况下都是为了构造任意内存读写以及控制流劫持

2、堆漏洞的防护方法:

  • 保护堆内存管理相关的数据结构:Heap Canary、对数据结构进行加密、在堆管理代码中加入大量安全检查
  • 通用防护:ASLR、DEP
  • 以上保护机制在Win10中基本以及全部开启,但是在CTF环境中ÿ
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值