問題:在做pwn題的過程中,我們經常會遇到題目提供libc,但是本地調試的時候加載的是本地libc。
解決方法:
方法1:
可以用添加環境變量的方法,如下:
export LD_LIBRARY_PATH=`pwd` #當前目錄為加載目錄
export LD_PRELOAD=你的libc #加載本地pwn題目下的libc
最后不用了在:unset LD_PRELOAD #調試完記得刪除環境變量
但是這個方法在ubuntu為64位系統而調試程序為32位程序時會導致libc無法加載的情況,如圖
這是在我本地調試發生的情況,而64位程序就可以加載。
方法2:
個人更偏向於這個方法,即寫exp調試時,加載本地程序使用
io = process(['./bin'],env={"LD_PRELOAD":"./libc-2.23.so"})
來加載,其中['./bin']替換為你需要調試的二進制文件名,"./libc-2.23.so"替換成你需要加載的目標libc,這樣本地調試就可以通過目標libc進行了。
