[CTF]-PWN:更换libc的pwn题(WSL ubuntu更换libc和ld的方法详解)

首先,要下载好patchelf和glibc-all-in-one,这个在这里就不多说了。

第二步,用题目给的libc查看elf文件应该要用的libc版本

strings 题目的libc | grep ubuntu
例如:strings /root/libc.so.6 | grep ubuntu

第三步,从glibc-all-in-one里下载对应的版本,详细看下图

记得要下载相近的版本,最好是一样的版本,不然会打不通,这里只是演示方法。

第四步,用ldd命令查看elf文件当前的libc和ld

如果在不进行更换的情况下,libc默认用本地系统的libc和ld。

如果是打远程的话,用的是远程机子的libc和ld,这就是为什么在python exp里用题目给的libc打远程打得通,打本地打不通的原因,题目里的libc只是用于计算地址,不会更改文件的libc,python exp计算地址是一个libc,程序运行又是一个libc,要文件的libc和python exp里计算地址的libc一致才能解题。

第五步,更改elf文件的libc和ld

更改ld:

patchelf --set-interpreter 新的ld路径 文件名
例如:patchelf --set-interpreter /root/glibc-all-in-one/libs/2.23-0ubuntu3_amd64/ld-2.23.so babyrop2
patchelf --set-interpreter /root/glibc-all-in-one/libs/2.23-0ubuntu3_i386/ld-2.23.so hacknote

更改libc:

patchelf --replace-needed 原来第二行的==>前的libc名 要更换成的libc 文件名
例如:patchelf --replace-needed libc.so.6 /root/glibc-all-in-one/libs/2.23-0ubuntu3_amd64/libc-2.23.so babyrop2
patchelf --replace-needed libc.so.6 /root/glibc-all-in-one/libs/2.23-0ubuntu3_i386/libc-2.23.so hacknote

这里有一个注意的点,路径要从/root开始。用WSL的话要注意这一点

然后更换题目libc和ld就完成了,可以用ldd查看是否更换完成,如果有not found那就是没更换完成,这样有可能程序无法启动。

  • 14
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值