簡單棧溢位

2021-10-04 09:18:10 字數 631 閱讀 9935

1.c與c++不檢查輸入的長度和型別

應用程式在獲取輸入的資料時,本來要獲取10個,結果獲取成12個,就發生溢位

如果輸入的變數與程式返回值挨得很近,直接覆蓋成我們要執行的a**

2.什麼是pwn

向目標傳送特定的資料,使其執行我們傳送的惡意**

web安全也是一樣,比如xss,通過我們輸入的xss**獲取使用者資訊

實際上就是程式沒有對使用者的輸入資訊進行嚴格的校驗

3.pwn的基礎知識

bx:基址暫存器,存放訪問記憶體的位址

cx:計數暫存器,比如你要迴圈5次,你的cx裡面就是5

dx:資料暫存器,存放ro端的乙個記憶體位址

si:di:

move a,b 從si賦值到di,存的是資料位址

狀態標誌:標誌結果,比如是正數還是負數,還是錯誤

cs:放**

ds:比如放全域性變數

ss:函式的區域性變數

es:其他段暫存器用

棧溢位和棧記憶體溢位

棧記憶體溢位是指使用者棧的大小最多為8 10mb,分配超過棧大小的變數則會導致棧記憶體溢位。如char c 1024102411 11mb 棧溢位指的是程式向棧中某個變數中寫入的位元組數超過了這個變數本身所申請的位元組數,因而導致與其相鄰的棧中的變數的值被改變。如char c 10 memset c...

棧溢位,記憶體溢位

對於一台伺服器而言,每乙個使用者請求,都會產生乙個執行緒來處理這個請求,每乙個執行緒對應著乙個棧,棧會分配記憶體,此時如果請求過多,這時候記憶體不夠了,就會發生棧記憶體溢位。棧溢位是指不斷的呼叫方法,不斷的壓棧,最終超出了棧允許的棧深度,就會發生棧溢位,比如遞迴操作沒有終止,死迴圈。可以把記憶體比作...

棧溢位攻擊c語言 棧溢位攻擊

我們先來看下面的乙個例子 include int main gets str printf str s n str return 0 在 main 函式內部定義乙個字元陣列,並通過 gets 為它賦值。在vs2010 debug模式下執行程式,當輸入的字元不超過10個時,可以正確輸出,但是當輸入的字...