基于glibc-all-in-one加载符号表利用patchelf自动切换libc

super_libc 🔧
在CTF Pwn挑战中,GLIBC版本的选择与切换常常对漏洞利用与调试起到至关重要的作用。super_libc 是一个用于自动化GLIBC切换的脚本工具,支持交互式版本选择、路径自动检测,并能够在调试过程中自动更新符号表,极大地简化了调试工作流。本文将介绍如何使用 super_libc,并提供详细的安装和使用步骤
项目地址
1 | https://github.com/peig0ng/super_libc |
1 | > 一款用于CTF Pwn挑战的自动化GLIBC切换脚本,支持交互式版本选择和路径自动检测 |
首先安装glibc-all-in-one,patchelf
glibc-all-in-one
1 | cd ~/ |
在glibc-all-in-one中
1 | cd ~/ |
patchelf
1 | cd ~/ |
super_libc
1 | cd ~/ |
使用方法 🛠️
符号表问题
gdb调试碰到的符号表问题
进入~/glibc-all-in-one/libs/目录
进去需要的libc版本目录下(以2.23为例),显示隐藏文件.debug,这里面是符号表信息
进入.debug/lib/x86_64-linuxgnu/
找到libc-2.23.so文件,复制到.debug根目录下
就可以不用gdb的命令情况下,super_libc更改好文件libc后, pwndbg打开文件,直接就能加载好符号表。
2.23.2.27都跟上面一样
2.31版本符号表改动,在下面的文件夹里面
2.34,2.35之后,将所有的文件复制到debug根目录就行,符号表太多了
基本命令
1 | ./super_libc.sh <binary> |
选项说明
设置环境变量(可选):
1
export GLIBC_ALL_IN_ONE_PATH=/path/to/your/glibc-all-in-one
可以自行添加环境变量以便全局运行
操作流程
- 运行脚本指定目标ELF文件
- 选择glibc版本(自动列出可用版本)
- 自动完成修补操作
- 验证结果
使用示例 📝
1 | $ ./super_libc.sh ./magicheap |
注意事项 ⚠️
确保目标ELF文件具有可写权限
glibc-all-in-one需要预先下载完整版本
如果遇到路径问题,可手动指定:
1
GLIBC_ALL_IN_ONE_PATH=/custom/path ./glibc-patcher.sh <ELF>
修补后建议使用
ldd
命令验证结果
⭐ 如果觉得本项目有帮助,欢迎Star支持!
- Title: 基于glibc-all-in-one加载符号表利用patchelf自动切换libc
- Author: luyanpei
- Created at : 2025-04-15 13:07:05
- Updated at : 2025-04-20 13:27:54
- Link: https://redefine.ohevan.com/2025/04/15/基于glibc-all-in-one加载符号表利用patchelf自动切换libc/
- License: All Rights Reserved © luyanpei