用给定的libc进行调试
-
首先根据题目给你的libc,查找相应版本的连接器
-
然后去glibc-all-in-one中下载相应的ld文件
-
glibc-all-in-one
安装步骤https://github.com/matrix1001/glibc-all-in-one
-
使用
-
查看各unbuntu版本的glibc
./update_list cat list
-
下载对应版本的glibc
./download 2.27-3ubuntu1_amd64
-
下载好的glibc在lib文件夹中
-
然后复制ld文件到pwn题目录下,此命令我是在题目终端下执行的,题目文件夹下面应该有这三个文件
cp ~/ctf2021/tools/glibc-all-in-one/libs/2.27-3ubuntu1_amd64/ld-2.27.so ./ld-2.27.so
-
-
-
有了libc文件和ld文件,就可以使用
patchelf
,修改pwn文件的执行环境-
patchelf安装,可以直接下载realse版本
https://github.com/NixOS/patchelf
-
查看,pwn原本的libc和ld
ldd ldd Mynote_Max
-
替换libc文件
patchelf --replace-needed libc.so.6 ./libc-2.27.so ./Mynote_Max -------------------------原本的libc----要替换的libc-----pwn文件
-
设置ld文件
patchelf --set-interpreter ./ld-2.27.so ./Mynote_Max ---------------------------对应的ld文件----pwn文件
-
-
执行一下文件,应该是可以运行的,如果不行,很可能是ld与libc不对应,也可能是ld和libc没有执行权限