小Pwn手杂谈之如何搜索下载libc以及其对应的ld文件

前言

本文的完成离不开tw11ty师傅的帮助,在此深表感谢

推荐使用下面的网址
https://launchpad.net/ubuntu/focal/amd64/libc6
网站页面如下:

如何搜索:
我们需要使用URL来直接进行版本的搜索
https://launchpad.net/ubuntu/版本/amd64/libc6
我们只需要修改上面的 版本 就可以替换对不同版本的libc进行查找
下面是不同的版本名称

也就是我们分别将 版本 修改为 :
plucky oracular noble 等就可以查到对应的Ubuntu版本所使用的历史libc版本

下面使用 Ubuntu20 版本来举例
比如我们想要找一个glibc版本为2.31的glibc
那么2.31的glibc应该是对应的Ubuntu20版本
那么我们就将版本修改为 focal 也就是URL修改为(注意这里focal必须全部小写)
https://launchpad.net/ubuntu/focal/amd64/libc6

然后就会看到不同的glibc版本,选择我们需要的版本,点击进入

这里我们使用 2.31-0ubuntu9.15 来举例
进入后我们点击右侧的deb文件下载

下载之后,我们放入自己的Ubuntu虚拟机中,使用dpkg -X指令来解压这个deb文件
具体解压指令如下:

1
2
3
sudo dpkg -X 文件名称 解压地址
比如:
sudo dpkg -X libc6_2.31-0ubuntu9.15_amd64.deb ./libc-2.31

解压之后进入libc-2.31文件夹,里面有lib文件夹,进入lib文件夹看见x86_64-linux-gnu文件夹,再次进入其中就可以看见一大堆文件

然后就可以看到里面两个绿绿的东西就是我们需要的ld文件和libc文件,后续就是使用patchlf工具来跟换libc,这里不过多介绍

我们在做一些题目的时候往往只有libc文件,没有对应的ld文件,那么我们该如何快速知道这个libc文件是什么版本的呢?
下面介绍一种方法

通过libc文件来查找libc版本

1
strings libc.so.6 | grep "Ub"

如下图所示

所以我们就可以知道这个libc.so.6的版本是Ubuntu GLIBC 2.31-0ubuntu9.15


小Pwn手杂谈之如何搜索下载libc以及其对应的ld文件
http://example.com/2025/01/13/小Pwn手杂谈之如何搜索下载libc以及其对应的ld文件/
作者
XiDP
发布于
2025年1月13日
许可协议