更改pwn题libc
glibc-all-in-one
我已经有了
仓库链接:
https://github.com/matrix1001/glibc-all-in-one
patchelf
我也有了
glibc-all-in-one下载与调整libc
如果题目没有给libc
则需要泄漏并使用LibcSearcher
如果题目给了libc:
1 |
|
glibc版本为2.23-0ubuntu11.3(主版本号-某一系统特定的版本修订号)
在glibc-all-in-one下
1 |
|
可以查看所有能够下载的libc版本
现在我们可以下载2.23-0ubuntu11.3_amd64
1 |
|
执行后即可下载
下载完它会保存在~/glibc-all-in-one/libs
下
进入该libc中
可以发现有一个.debug
目录,这个目录中保存了该libc的符号表信息
进入.debug/lib/x86_64-linux-gnu
,可以找到libc-2.23.so
文件
将这个文件,放到.debug/
目录下。
也可以把这些文件全部拖到.debug/
下
这样,就可以在不动用gdb的命令的情况下,patchelf更改好文件libc后,
gdb打开后就能直接加载好符号表
但是,ubuntu版本在2.31和2.34后的符号信息表位置发生了些许变化
我们只需要省流操作:
在.debug/
目录下执行
1 |
|
将./build-id/
目录以及其子目录下的文件,都复制到.debug/
目录下
使用patchelf
接下来, 是使用patchelf更改libc的操作
先将~/glibc-all-in-one/libs/
下的2.23-0ubuntu11.3_amd64
移动到pwn题目文件的同级目录下,然后执行: 即可
1 |
|
-set-interpreter
:设置ld,要指定为目录下的ld文件-set-rpath
:设置了运行环境,要指定为libc的目录
2.25以上:
1 |
|
(ld换成了默认的了,没有具体的版本名了)
LibcSearcher项目
zarkivy/LibcSearcher: 🔍 LibcSearcher-ng – get symbols’ offset in glibc.
学了一些命令
1 |
|
查看目标程序的进程
1 |
|
强制终止所有相关进程
当
可以使用
然后再patchelf即可