七、工具
譯者:飛龍
日期:2001.9.1
版本:v1.2
一旦利用完成啡邑,或者甚至在利用開發(fā)過程中,使用工具來獲取必要的偏移更加有用井赌。一些工具也有主意識別漏洞谤逼,例如在閉源軟件中的格式化字符串漏洞。我在這里列出了四個工具仇穗,它們對我來說很有用流部,可能對你也是。
7.1 ltrace
纹坐,strace
ltrace
[8] 和strace
[9] 工作方式相似:在程序調(diào)用它們時枝冀,它們勾住庫和系統(tǒng)調(diào)用,記錄它們的參數(shù)和返回值。這讓你能夠觀察程序如何和系統(tǒng)交互宾茂,將程序本身看做黑盒瓷马。
所有現(xiàn)存的格式化函數(shù)都是庫調(diào)用拴还,并且它們的參數(shù)跨晴,最重要的是它們的地址都可以使用ltrace
來觀察。任何可以使用ptrace
的進程中片林,你都可以使用這個方式快速判斷格式化字符串的地址端盆。strace
用于獲取緩沖區(qū)地址,數(shù)據(jù)讀入到該地址中费封,例如如果read
被調(diào)用來讀取數(shù)據(jù)焕妙,它們之后又用作格式化字符串。
了解這兩個工具的用法弓摘,你可以節(jié)省大量時間焚鹊,你也可以使用它們來嘗試將 GDB 附加到過時的程序上,它沒有任何符號和編譯器優(yōu)化韧献,來尋找兩個簡單的偏移末患。
譯者注:在 Windows 平臺上,你可以使用 SysinternalsSuite 來觀察文件锤窑、注冊表和 API 的使用情況璧针。
7.2 GDB,objdump
GDB [7]渊啰,經(jīng)典的 GNU 調(diào)試器探橱,是一個基于文本的調(diào)試器,它適用于源碼和機器代碼級別的調(diào)試绘证。雖然它看起來并不舒服隧膏,一旦你熟悉了它,它就是程序內(nèi)部的強大接口嚷那。對于任何事情胞枕,從調(diào)試你的利用,到觀察進程被利用车酣,它都非常好用曲稼。
objdump
,一個 GNU 二進制工具包中的程序湖员,適用于從可執(zhí)行二進制或目標文件中獲取任何信息贫悄,例如內(nèi)存布局,區(qū)段或main
函數(shù)的反匯編娘摔。我們主要使用它來從二進制中獲取 GOT 條目的地址窄坦。但是它可以以很多不同的方式使用。
譯者注:這兩個工具都在
build-essential
包中,可以執(zhí)行apt-get install build-essential
來安裝鸭津。
譯者注:在 Windows 平臺上彤侍,你可以使用 OllyDbg 或者 WinDbg(x86,x64)來代替 GDB逆趋,你可以使用 IDA Pro 來代替`objdump盏阶。