Note
  • Introduction
  • PWN
    • __libc_csu_init函数的通用gadget
    • _int_malloc源码分析
    • _IO_FILE利用思路总结
    • C++ 虚表分析
    • Fast_bin笔记
    • house_of_force
    • House_of_Roman
    • Linux_ShellCode
    • Return-to-dl-resolve原理及利用
    • Unlink利用原理
    • Unsorted_Bin_Attack
    • 获取libc方法
    • 利用main_arena泄露libc基址
    • 整数溢出
    • 重写.fini_array函数指针
    • Windows_SEH利用
  • Windows_Operating_System
    • Dll隐藏
    • Dll注入之远程线程注入
    • IAT_HOOK原理实现
    • Windows下通用ShellCode原理
    • 代码注入
    • inline_hook框架
    • 32位程序调用64位函数原理
    • 调试原理
    • Windows异常处理初探
    • Windows_SEH利用
  • Windows_Kernel
    • MSR_HOOK
    • SSDT_HOOK
  • Virus_Analysis
  • Program
    • Dll的生成与使用
  • Miscellaneous
    • ctf笔记
    • 常见算法特征总结
    • ELF文件笔记
  • Linux_Operating_System
    • 系统调用
    • 分页机制
    • 调试原理
    • linux无文件执行elf
    • egg hunter
    • 缺失的动态链接库
  • Linux_Kernel
    • KERNEL_PWN状态切换原理及KPTI绕过
  • IOT
    • IOT调试环境搭建
    • mips_arm汇编学习
    • Cisco RV160W系列路由器漏洞:从1day分析到0day挖掘
  • Symbolic_Execution
    • angr初探
    • angr_进阶
  • Fuzz
    • UAF_overflow_check
    • intel-pin
  • CVE
    • Cisco RV160W系列路由器漏洞:从1day分析到0day挖掘
  • Assembly
    • Junk_Code_Analysis
    • opcode
  • Andriod_Security
Powered by GitBook
On this page

Was this helpful?

  1. PWN

利用main_arena泄露libc基址

Previous获取libc方法Next整数溢出

Last updated 6 years ago

Was this helpful?

利用条件

  • 有目标主机libc.so

  • 可申请和释放 非Fastbin_chunk

unsorted bin是双向链表结构,在unsorted bin的顶端 32位指向

free和malloc操作时,最后free的chunk被链接到链表的头部,则申请chunk则是从链表的尾部开始

1 . 使用pwndbg调试,当unsorted bin中存在多个回收的chunk时,如图,先 free chunk2 及0x804a058 ,再 free chunk1 及0x804a160

此时unsorted bin的布局如图:

2 . 当然更好的,当unsorted bin中只存在1个回收的chunk时:

fd 与 bk 都指向

3 . main_arena存储在libc.so.6文件的.data段,通过这个偏移我们就可以获取libc的基址,这里我讲一下怎么找到main_arena的地址,首先使用IDA打开libc文件,然后搜索函数malloc_trim(),具体如下图所示。

为什么是这个呢,我们可以对照一下malloc.c的源代码,源代码如下图。

bingo !

PS:之前演示的是32位程序,64位程序同理,但 64位指向