C++文件与C文件更换libc有很多不一样的地方,我是在写buu的ciscn_2019_final_3才意识到这个问题,C文件只需要更换libc和ld就可以了,但是C++文件不同,除了更换libc和ld,它还需要更换libstdc++.so.6和libgcc_s.so.1
更换libc和ld的方法我在那篇文章里讲了,这里就不重复讲了。主要是把更换libstdc++和libgcc的方法讲一下。
patchelf --set-interpreter 新的ld路径 文件名
patchelf --replace-needed 原来第二行的==>前的libc名 要更换成的libc 文件名
libc2.23:
libc2.23(32位)(约ubuntu16):patchelf --set-interpreter /root/glibc-all-in-one/libs/2.23-0ubuntu3_i386/ld-2.23.so hacknote
libc2.23(32位)(约ubuntu16):patchelf --replace-needed libc.so.6 /root/glibc-all-in-one/libs/2.23-0ubuntu3_i386/libc-2.23.so hacknote
libc2.23(64位)(约ubuntu16):patchelf --set-interpreter /root/glibc-all-in-one/libs/2.23-0ubuntu3_amd64/ld-2.23.so babyrop2
libc2.23(64