我想了解這兩種攻擊類型之間的確切區別。從我已閱讀:- 緩衝區溢出和返回到libc攻擊之間的區別
緩衝區溢出:它覆蓋棧上的RET地址爲指向惡意代碼插入代碼的另一部分。非常有效 - 在這裏我們需要修改程序的源代碼以實際執行攻擊。
返回Libc-這裏不是修改源代碼,由C庫提供運行時功能調用用來(說打開一個shell)。這裏用於函數調用的參數也在覆蓋緩衝區中傳遞,最終在堆棧的ret部分之後結束。
以上是一個準確的描述嗎?
而另一個相關的問題 - 這將是可能有,而不真正修改原始程序的源代碼中的緩衝區溢出攻擊?如果我們編寫一個新程序並允許修改某些內存段(這是原始程序損壞的堆棧中新的ret地址),那可能就是這種情況。再次,我認爲這可能是不可能的,因爲內核中的進程之間提供了內存保護。
你能解釋一下你的意思 - 讓存儲可執行文件(或不可執行)。另一個疑問(我原來的問題的一部分)是 - 我相信C代碼將無法訪問主內存的所有部分。那麼如何確定惡意彙編代碼在內存中的位置呢?因爲我認爲對於大多數記憶區域 - 在返回時只會標記分段錯誤。 – Hari
您插入的漏洞利用代碼的核心通常是使用和exec()系列風格的函數。這意味着,通過給它提供適當的參數,你可以讓它產生一個/ bin/sh shell作爲root用戶。這是*正在執行*一個程序,你不能再做了。有許多不同的安全措施,但這種人會被描述,例如,在 – gnometorule
http://en.wikipedia.org/wiki/NX_bit – gnometorule