當ROP鍊執行時,攻擊者的最終目标是将shellcode重新放置在可執行的記憶體區域以繞過DEP保護。為了做到這一點,攻擊者将調用一些類似VirtualAlloc的API函數。這些被攻擊者用于繞過DEP的API是有限的。
由于原始程式的堆棧被切換為指向攻擊者控制的資料,是以棧指針不再指向棧限以内。
程式棧限的資訊被存儲在TEB中。
<code>1</code><code>:</code><code>020</code><code>> !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>StackLimit&&esp<StackBase)
本文轉自fatshi51CTO部落格,原文連結:http://blog.51cto.com/duallay/1901136 ,如需轉載請自行聯系原作者