緩衝區溢位,簡單的說就是計算機對接收的輸入資料沒有進行有效的檢測(理想的情況是程式檢查資料長度並不允許輸入超過緩衝區長度的字元),向緩衝區內填充資料時超過了緩衝區本身的容量,而導致資料溢位到被分配空間之外的記憶體空間,使得溢位的資料覆蓋了其他記憶體空間的資料。
通過往程式的緩衝區寫超出其長度的內容,造成緩衝區的溢位,從而破壞程式的堆疊,造成程式崩潰或使程式轉而執行其它指令,以達到攻擊的目的。造成緩衝區溢位的原因是程式中沒有仔細檢查使用者輸入的引數。
例如 strcpy((char*)buffer,(char*)data),如果輸入資料超過分配的緩衝區的大小就會造成緩衝區溢位。
隨便往緩衝區中填東西造成它溢位一般只會出現「分段錯誤」(segmentation fault),而不能達到攻擊的目的。如果淹沒了返回位址,通過淹沒的方式修改函式的返回位址,使程式**執行「意外」的流程。最常見的手段是通過製造緩衝區溢位使程式執行乙個使用者shell,再通過shell執行其它命令。如果該程式有root或者suid執行許可權的話,攻擊者就獲得了乙個有root許可權的shell,可以對系統進行任意操作了。
緩衝區溢位
緩衝區溢位是指當電腦程式向緩衝區內填充的資料位數超過了緩衝區本身的容量。溢位的資料覆蓋在合法資料上。理想情況是,程式檢查資料長度並且不允許輸入超過緩衝區長度的字串。但是絕大多數程式都會假設資料長度總是與所分配的儲存空間相匹配,這就為緩衝區溢位埋下隱患。作業系統所使用的緩衝區又被稱為堆疊,在各個操作程...
緩衝區溢位 棧溢位
1 緩衝區概念 緩衝區 buffer 又稱為快取,它是記憶體空間的一部分。也就是說,在記憶體空間中預留了一定的儲存空間,這些儲存空間用來緩衝輸入或輸出的資料,這部分預留的空間就叫做緩衝區。使用緩衝區有兩個好處 1 減少實際物理讀寫次數 2 緩衝區在建立時就被分配記憶體,這塊記憶體區域一直被重用,可以...
緩衝區溢位保護
1.堆疊記憶體位址隨機化,程式每次執行的堆疊位址都不一樣 空出一段隨機偏移 關閉方法 sysctl w kernel.randomize va space 0 echo 0 proc sys kernel randomize va space 2.棧 不可執行 如果棧中 不可執行的話,緩衝區溢位的s...