這次緩沖區溢出是在實驗樓上實現的。關於步驟的問題,就不說了,給一個實驗步驟的地址。
在這次緩沖區溢出的實驗中,出現了以下問題:
如何知道操作系統是32位的還是64位的?
當使用地址空間隨機化來分配堆和棧的初始地址時,應該如何猜解內存地址?
Linux系統在緩沖區溢出和其它的shell攻擊上進行了防范,應該如何突破這個問題?
實驗步驟中給定的shellcode的原理是什麼?
攻擊程序中的"\90\90"的數量對程序是否有影響?有的話,有什麼影響?
GDB調試時的命令都是什麼作用?
GCC編譯時的命令作用?
緩沖區溢出攻擊的原理?
如何在遠程登錄不知道root密碼的電腦上實現該過程?
第一個問題:
當登錄到一台linux主機時,我們可以采用這些方法來查看主機是32位還是64位(此處引用其他博客的內容)。
第二個問題、第三個問題:
暫時還沒學會,希望會的大牛們給與適當的指引。
第四個問題:實驗步驟中的shellcode的原理?
這段shellcode代碼的重點在於name數組,name數組中存儲了可執行文件的路徑:/bin/bash和可執行文件:/bin/bash。execve()函數的執行過程:創建一個子進程,子進程沒有環境變量且在"/bin/bash"路徑下,執行"/bin/bash"命令。
但是,這段代碼的功能是什麼?為什麼這樣寫?希望懂得大神可以解釋一下。
第五個問題:exploit.c程序中的"\90"數量有沒有影響?
這個問題的答案可以在實驗之後給出,答案就留給想實踐的人去尋找了。
第六個問題:GDB調試命令的作用?
GDB調試命令總結。關於一些不太一樣的地方,請參考用戶手冊。
第七個問題:GCC編譯時的命令的作用?
GCC選項簡介。
第八個問題:緩沖區溢出的原理?
在《0day安全:軟件漏洞分析技術》一書中有詳細解釋。之後總結。
第九個問題:如何在遠程登錄不知道root密碼的電腦上實現該過程?
暫時不會,希望大神指點。