2015-04-26 66 views
2

我一直在研究使用堆棧溢出編寫RET值和SEH覆蓋漏洞的教程。堆棧溢出漏洞利用:RET與SEH覆蓋

據我所知,當我覆蓋SEH值時,RET值也被覆蓋,同時SEH漏洞利用也很難,因爲你還需要拋出一個異常來使漏洞運行。

如果是這樣,如果我始終可以使用RET值,SEH覆蓋漏洞的用途是什麼? SEH重寫覆蓋RET的優點和缺點是什麼?

+1

我不會認爲你總是可以覆蓋兩者。可能有一個錯誤只允許覆蓋其中的一個。 –

+1

@AndrewMedico我沒有說我總是可以覆蓋兩者,我說過,一旦你成功覆蓋SEH,很可能你也會覆蓋RET,因爲在大多數情況下,它位於堆棧上方。 –

回答

3

這取決於什麼是漏洞,利用條件是什麼。

如果您可以覆蓋RET並構建一個完整的漏洞利用比你正確和覆蓋SEH將是不必要的。

但是,情況並非總是如此..在某些情況下,RET覆蓋保護將會出現,如堆棧金絲雀。

在這種情況下,使用RET覆蓋進行攻擊將比覆蓋SEH處理程序並生成異常更加困難(如果不是不可能的話)。

關於覆蓋SEH,可以這麼說,如果SafeSeh處於ON狀態並且堆棧金絲雀處於OFF狀態,那麼使用RET覆蓋比使用SEH更容易。

一般來說,我會說確定使用哪種利用技術的主要事實取決於現有的緩解措施和易用性。

它總是有好的另一個攻擊矢量,可以使用,如果所有其他選項失敗。