CTF思路
点击放大

English
pwn 选手的 glibc 瑞士军刀。 智能识别参数,不记 flag,拿来就用。下载、搜索、识别、比对、编译——覆盖 pwn 场景下 glibc 的全生命周期。
> 旧版 shell 脚本已移至 legacy/,不再维护。glibc-aio 是全新 v2 重写。
Python 3.10+。pip install 自动安装 pyelftools(ELF 解析)和 zstandard(.deb zstd 解压),无其他依赖。
首次使用需要拉取可用包列表(约需 5 秒,生成 list 文件):
三条命令覆盖 pwn 最常见的场景:
| 命令 | 说明 |
|------|------|
| glibc-aio mirror list | 显示 4 个镜像源及类型(regular / fallback) |
| glibc-aio mirror update | 从所有镜像拉取可用包列表,写入 list 文件 |
| glibc-aio search 2.35 | 按包名模糊搜索可用版本 |
| glibc-aio search --symbol system=0x4f440 | 按符号偏移反查 libc 版本(libc.rip 在线) |
| glibc-aio search --symbol a=0x1 --symbol b=0x2 | 多符号 AND 查询 |
| glibc-aio search --symbol ... --tol 5 | 偏移容差 ±N 字节 |
| glibc-aio search --buildid abc123 | 按 BuildID 查找 |
| glibc-aio search --libc ./libc.so --symbol system | 在指定 libc 文件中查找符号 |
| glibc-aio search --libc ./libc.so --symbol "*exec*" | glob 匹配符号名 |
| glibc-aio search --libc ./libc.so --ends-with f30 | 地址末位匹配(partial o 神器) |
| glibc-aio search --libc ./libc.so --str "/bin/sh" | 在 .rodata/.data 中搜字符串,返回偏移 |
| glibc-aio download 2.27-3ubuntu1_amd64 | 下载 libc + debug symbols |
| glibc-aio download <id> --mirror tuna | 指定镜像 |
| glibc-aio download <id> --no-dbg | 跳过 debug symbols |
| glibc-aio download <id> --keep-deb | 保留 .deb 文件不删除 |
| glibc-aio identify ./libc.so | BuildID 在线 → 符号指纹本地,双路识别版本 |
| glibc-aio identify --offline ./libc.so | 仅本地符号指纹,不联网 |
| glibc-aio diff libc-a.so libc-b.so | 比对两个 libc:符号增删、偏移变化、安全属性差异 |
| glibc-aio build 2.29 amd64 | Docker 容器编译(版本→镜像自动映射) |
| glibc-aio build 2.27 i686 | 32 位交叉编译 |
| glibc-aio build ... --image ubuntu:16.04 | 指定 Docker 镜像 |
| glibc-aio build ... --no-docker | 宿主机直接编译 |
所有子命令支持 --json 输出。
不敲子命令时,glibc-aio 根据参数类型自动判断意图:
| 输入 | 自动执行 | 示例输出 |
|------|---------|----------|
| glibc-aio 2.35 | 搜可用包 | 2.35-0ubuntu3.13_amd64 2.35-0ubuntu3_amd64 ... |
| glibc-aio 2.27 system | 已下载 libc 中查符号 | 2.27-3ubuntu1_amd64: 000000000004f440 system |
| glibc-aio 2.35 "*mmap*" | 已下载 libc 中 glob 搜 | 列出所有匹配版本的 mmap 偏移 |
| glibc-aio system 0x4f440 | 在线反查版本 | [Online] libc6_2.27-3ubuntu1.5_amd64 |
| glibc-aio puts 0x80970 system 0x4f440 | 多符号 AND | 同时满足两个偏移的 libc 版本 |
| glibc-aio ./libc.so | 识别版本 | Method: buildid : 2.27-3ubuntu1.5_amd64 |
| glibc-aio ./libc.so system | 查符号偏移 | 000000000004f440 STT_FUNC system |
| glibc-aio ./libc.so "*exec*" | glob 搜符号 | 14 个匹配符号(execl, exec...) |
| glibc-aio ./libc.so 0xf30 | 末位匹配(3 hex digits = 12-bit mask) | 匹配 f30 的 7 个符号 |
| glibc-aio ./libc.so 0x80 | 末位匹配(2 hex digits = 1 byte) | 末字节 80 的符号 |
| glibc-aio ./libc.so system 0x380 | 符号 + 末位组合 | 先 glob 再末位过滤 |
智能分发规则: 存在的文件路径 → libc 文件;0x 开头或 ≥5 位纯 hex → 地址;数字.数字 → 版本号;其余 → 符号名。参数在前文是文件时,后续 hex 不限制长度(0x80、f30 均可)。
search — 查版本 / 搜 libc在线模式同时查询 libc.rip API 和本地符号索引数据库。网络不可用时本地结果不受影响。本地索引在每次下载时自动建立。
download — 下载 libc + debug symbols4 个镜像源按序尝试:tuna → ustc → ubuntu-archive → old-releases(fallback)。任一下载成功即停止,对用户透明。
下载完成后自动:解压 .deb(支持 xz / gz / zstd 三种压缩)、提取符号建本地索引(供 search 和 identify 离线使用)、清理临时文件。
identify — 识别未知 libc 版本双路 fallback。优先从 ELF 的 .note.gnu.build-id 提取 BuildID 在线查 libc.rip;失败则计算符号表哈希指纹在本地数据库中匹配。本地数据库随每次 download 自动增长。
diff — 比对两个 libc 版本对比符号表(新增/移除/偏移变化)和安全属性(RELRO/NX/Canary/PIE/RUNPATH)。
build — 从源码编译 glibc默认在 Docker 容器中编译,自动根据版本号选择 Ubuntu 镜像(2.19→14.04, 2.23-2.27→16.04, 2.28-2.29→18.04, 2.30-2.34→20.04, 2.35+→22.04)。编译产物写入 libs/build/<>/<arch>/。Docker 不可用时自动回退宿主机编译。
mirror — 镜像源管理所有命令支持 --json,输出合法 JSON 可直接管道给 jq:
| 项 | 值 |
|---|-----|
| Python | 3.10+ |
| 依赖 | pyelftools + zstandard(2 个) |
| 测试 | 28 passed |
| 命令 | 6 子命令 + 11 种智能分发 |
| 镜像 | 4(tuna / ustc / ubuntu-archive / old-releases) |
| 在线 API | libc.rip |
| 本地缓存 | ~/.cache/glibc-aio/(符号索引 + 指纹库) |
| .deb 压缩 | xz / gz / zstd 自动检测 |
旧版 shell 脚本在 legacy/,保留但不维护。
开发语言:Python
Star 数:829
该项目属于CTF思路方向的开源资源,代码结构清晰,适合安全研究人员学习参考。项目围绕🎁A convenient glibc binary and debug file downloader and source code auto builder展开,提供了可运行的实现,对理解相关安全机制、工具原理与攻防技术具有较高的研究价值。
从技术实现角度看,此类项目的核心在于对底层原理的深入理解与工程化落地。开发者在研究过程中可以结合官方文档与社区讨论,梳理项目的初始化流程、核心模块职责与数据流转,逐步掌握其中的技术细节与设计思路。
1. 下载源码压缩包,解压到本地环境。
2. 根据项目类型准备对应的运行环境与依赖。
3. 按照 README 中的步骤完成配置与部署。
4. 在隔离的测试环境中运行验证,避免影响生产系统。
本资源来源于开源社区,仅供安全研究、技术学习与合法授权范围内的攻防演练使用,请勿用于任何非法或侵害他人权益的用途。使用本项目产生的一切后果由使用者自行承担。
| 资源标题 | glibc-all-in-one - 🎁A convenient glibc binary and debug file download |
| 所属分类 | CTF思路 |
| 发布作者 | admin |
| 发布时间 | 2026-10-05 23:39:01 |
| 下载权限 | 免费下载 |
| 附件数量 | 2 个下载链接 |
| 浏览次数 | 152 |
| 讨论数量 | 0 |
| 主题状态 | 正常讨论中 |