天天看點

stack pivot

當ROP鍊執行時,攻擊者的最終目标是将shellcode重新放置在可執行的記憶體區域以繞過DEP保護。為了做到這一點,攻擊者将調用一些類似VirtualAlloc的API函數。這些被攻擊者用于繞過DEP的API是有限的。

由于原始程式的堆棧被切換為指向攻擊者控制的資料,是以棧指針不再指向棧限以内。

程式棧限的資訊被存儲在TEB中。

<code>1</code><code>:</code><code>020</code><code>&gt; !teb</code>

<code>TEB at 7ffda000</code>

<code>ExceptionList: 0220f908</code>

<code>StackBase:</code><code>02210000</code>

<code>StackLimit:</code><code>02201000</code>

如果棧指針不滿足下面的條件,我們認為這是一個stack pivot:

if(esp&gt;StackLimit&amp;&amp;esp&lt;StackBase)

本文轉自fatshi51CTO部落格,原文連結:http://blog.51cto.com/duallay/1901136 ,如需轉載請自行聯系原作者