glibc版本的更换
glibc版本的更换
前言
在我们学习pwn或者做pwn题的时候,尤其是涉及到堆的时候,glibc版本的要求也是比较重要的。
介绍
Libc,Glibc都是Linux版本下的C语言函数库
Libc(C Library)是ANSI C最基本的C语言函数库,由头文件不同被划分为15个部分。
Glibc(GNU Library)是GNU C函数库的一部分,主要适用于Linux系统。
如何更换glibc版本
1、下载安装patchelf
1 | sudo apt install patchelf |
输入:
1 | patchelf -h |
看是否安装成功
2、下载glibc-all-in-one
1 | git clone https://username:passwords@github.com/matrix1001/glibc-all-in-one |
然后执行:
1 | update_list |
然后可以使用cat list查看我们需要的libc。
1 | root@ubuntu:~/glibc-all-in-one# cat list |
找到需要的Libc,执行命令
1 | ./download 版本 |
更换libc
比如说我们现在有一个ELF文件,我们是希望用libc-2.27.so版本的函数库。
因为本机实验的在Ubuntu16.04下,所以这里用ldd查看文件时libc版本是libc.so.6。所以需要更换为
使用根据上述操作执行
1 | cat list |
再执行:
1 | ./download 2.27-3ubuntu1_amd64 |
这时候会出现两个文件夹
然后在libs这个文件下找到对应的ld文件和libc文件。
写命令修改:
1 | patchelf --set-interpreter /root/glibc-all-in-one/libs/2.27-3ubuntu1_amd64/ld-2.27.so ./demo1 |
执行完之后
可以看见已经成功修改了。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 z0yuan's Blog!