利用 patchelf 修改 pwn 题目的 libc

pwn有时候真的太玄学了(我太菜了),有时候因为环境问题导致一道题很难调试成功,跟 wp 上的差很多,有时候调试几天也不知道怎么回事,换个环境突然就好了。特别是到堆的时候,搞了好几台不同 ubuntu 版本的虚拟机,最后发现还是直接用 patchelf 修改 pwn 题目的libc 好, 希望能帮助大家。

 先下载 patchelf

sudo apt-get install patchelf

再下载支持库

git clone https://github.com/matrix1001/glibc-all-in-one

还需要更新支持库

cd glibc-all-in-one/
./update_list

 

 

 查看可以下载的库

cat list

 

 

 使用下面的命令下载

./download name

下载后的文件都放到了 libs 文件夹下

那么准备工作就做好了,这里以 buuctf 提供 libc 为例

我们首先要先确定与 libc 同版本的 链接器

strings buu/libc-2.23-x64.so | grep ubuntu

 

 

 这个我们 list 中是有的

再看下现在的 pwn 题目使用的 libc

ldd -v pwn

 

 明显还是系统提供的 libc 和 ld

接下来修改 pwn 题目的 libc 和 ld

patchelf --set-interpreter /home/w1nd/Desktop/glibc-all-in-one/libs/2.23-0ubuntu11.3_amd64/ld-2.23.so /home/w1nd/Desktop/pwn
patchelf --replace-needed libc.so.6 /home/w1nd/Desktop/buu/libc-2.23-x64.so pwn

 

 很好,pwn 题目的 libc 和 ld 都被修改了,不过不建议直接使用 buuctf 提供的 libc,因为无法用 gdb 调试

可以使用支持库中的

patchelf --set-interpreter /home/w1nd/Desktop/glibc-all-in-one/libs/2.23-0ubuntu11.3_amd64/ld-2.23.so /home/w1nd/Desktop/pwn
patchelf --replace-needed libc.so.6 /home/w1nd/Desktop/glibc-all-in-one/libs/2.23-0ubuntu11.3_amd64/libc-2.23.so pwn

 

顺便提下,我更新支持库的时候出现了未找到 /usr/bin/pytho 的情况,但是我的 python3 是能正常用的,所以直接复制下即可解决

 

posted @   xshhc  阅读(2903)  评论(1编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示