最近开始做高版本的 glibc PWN题,一个很困扰的问题就是如何快速对不同的题切换 glibc版本。后面从网上搜集了一大堆资料,大概整理一下我 能够切实可行的方法吧。也方便我后面再使用。
编译不同版本的glibc
首先要使用不同版本的glibc,我们需要有不同版本的 glibc 可执行文件,也就是 libc.so 和 ld.so。这两个文件是程序运行时所需要的文件按。
当然也可以在网上找已经编译好的libc,但是找不到时自己编译的步骤如下:
glibc-all-in-one:是一个开源项目,里面有各种版本的glibc 源码。
然后编译glibc 的命令如下:
1 | git clone https://github.com/matrix1001/glibc-all-in-one |
目前,我按照该步骤编译没问题。如果有问题,可以参考一下下面参考文献的第一篇。
加载glibc
对于一个可执行文件,可以通过 LD_PRELOAD
来指定其使用 对应版本的 glibc。但是这里需要注意,还得指定一个对应版本的 ld.so,不然 可能会出现问题。
使用方法如下,我习惯将 ld.so 和 libc.so.6 放到与程序同目录下。也可以自己改变路径。
1 | p = process(["ld.so", "./test"], |
通过上面的操作,我们就可以指定 test 加载对应版本的 glibc。
参考文献
https://bbs.pediy.com/thread-254868.htm
- 本文作者: A1ex
- 本文链接: http://yoursite.com/2020/08/30/PWN-使用不同版本的glibc/
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!