漏洞分析 二進位制漏洞

2021-10-02 01:46:02 字數 2431 閱讀 4128

二進位制漏洞:傳統的緩衝區溢位、uaf(use-after-free)等涉及二進位制編碼的漏洞統稱為二進位制漏洞

根據緩衝區所處的不同記憶體空間以及分配方式的不同,緩衝區溢位可以分為棧溢位和堆溢位

棧溢位原理:

棧是一種基本的資料結構,是由編譯器自動進行分配、釋放的。棧遵循先進後出的規則,生長方向為從高向低生長,也就是位址由高到低

棧中存放的資料:對於要呼叫的子函式來說,存放子函式的引數、返回位址、區域性變數等重要資訊。函式可以通過棧來方便的對區域性變數進行讀取。

在呼叫乙個子函式的時候,我們要做的工作有以下幾步:

1:將引數push到棧上

2:將當前eip的值push到棧上進行儲存,當作函式呼叫之後的返回位址

3:執行子函式的函式體

程式在呼叫子函式的時候,(可以通過od等工具看彙編**)會先將ebp壓棧調整棧結構,之後會在棧上開闢一段空間,這段空間就是子函式的空間。在實際的函式呼叫過程中,我們的區域性變數是不斷變化的,而且需要注意的是 :棧是向低位址的方向生長的,但是區域性變數是向高位址生長的

也就是說,變數是向下 「吞噬」 的,這樣的話就會產生乙個問題:當變數向下「吞噬」的時候,"一不小心"把下邊ebp和eip的空間也」吞噬「了,會發生什麼事情呢?這個時候就會產生我們說的棧溢位現象,我們知道eip的值是用來函式執行完之後返回用的,但是在被」吞吃「之後,顯然棧空間的值已經發生改變,這個時候就會返回錯誤。這個時候我們也就控制了程式的eip,可以為所欲為了。那麼什麼是造成棧溢位的主要原因呢?

**編寫過程的不規範,舉個例子:在執行資料複製的操作的時候,不檢查源資料的長度直接進行複製,很有可能會因為目的空間不夠而導致這種情況的產生,如何避免這種情況呢?最簡單的辦法就是在執行前增加長度限制判斷。

整型溢位漏洞

整形溢位漏洞主要是指在計算機中的資料型別問題導致的溢位漏洞,整型作為一種資料型別,不僅僅存在正負的問題還存在資料範圍的問題甚至還包括不同整型資料之間的賦值和轉換問題,而在這其中容易產生一系列不嚴謹的演算法,可能會導致溢位漏洞的產生。

因此,綜上所述,整型漏洞通常分為以下幾種:

1:儲存溢位漏洞

2:運算溢位漏洞

3:符號問題導致的漏洞

一:儲存溢位漏洞

儲存溢位相對比較簡單易懂,就是由於使用不同的資料型別來儲存整型數造成的。

舉個例子:

下邊這個**段,在實際的賦值過程中:作者想要達到的目的可能是將a的值賦給b,但是在實際的輸出過程中,我們可以看到,實際的輸出結果並不是a的值,輸出結果如下:

int a=

0x10000

;short b=a;

printf

("%d"

,b);

輸出結果:

這是因為,不管哪一種資料型別都是由儲存範圍的限制的,int型是32位長度的,但是short是16位的資料長度,因此在進行賦值操作的時候,short型的資料沒辦法將int型資料的所有位數全盤接受,這樣就會導致我們之前說的儲存溢位漏洞。

二:運算溢位漏洞

相對於儲存溢位來說,運算溢位相對來說更加容易理解,顧名思義,運算溢位就是在整型資料在運算過程中導致的溢位,我們都知道,資料型別的範圍長度以及範圍是有限的,當然基於這一點我們在定義資料型別的時候大多時候還是會謹慎的使用各類資料型別,防止超出資料型別的範圍,但是需要注意的是,我們往往將注意力放在賦值以及定義乙個變數的時候,但是在定義之後,對該資料的各類運算是不是會超出資料型別的範疇我們通常是不會給太多關注的,因為我們大多情況下關注的都是運算的結果。這樣也就導致了,很多漏洞都是通過這型別的溢位導致的。

三:符號問題導致的漏洞

整型資料分為無符號整型資料和有符號整型資料,如果在編寫程式**的時候,忽略符號問題造成的影響,那麼就極有可能造成安全事故。舉個著名的例子:

apache web server分塊溢位漏洞

uaf漏洞

uaf漏洞全稱use-after-free,字面意思,也就是說在釋放之後使用。具體過程如下**:

uaf漏洞是因為指標的使用不當造成的,在釋放空間或指標之後,又重新被後續的函式呼叫,因此編寫程式的時候為了避免這一漏洞的產生,需要在實際運用的過程中,對指標的有效性進行判斷。

二進位制SQL注入漏洞分析

摘自 發現 中並無出奇,只是將幾年前的冷飯再炒.因為多年過去了,可能有人疏忽,多試一些總有人中招的.注入方式中數字欄位是最容易進入的.文字也可以,但在querystring中提交文字的情況不如數字多.最常見的就是形如 news.asp?id 3 在asp中,疏忽的寫法為 aspid request ...

二進位制漏洞原理 整型溢位漏洞

整數分為有符號和無符號兩類,有符號數以最高位作為符號位,正整數最高位為1,負整數最高位為0,不同型別的整數在記憶體中有不同的取值範圍,unsigned int 4位元組,int 4位元組,當儲存的數值超過該型別整數的最大值就會發生溢位。在一些有符號和無符號轉換的過程中最有可能發生整數溢位漏洞。基於棧...

二進位制漏洞挖掘 windows漏洞利用如何快速入門

windows二進位制安全研究,漏洞利用是提現乙個人段位的名片。windows二進位制漏洞入門包含了。1.簡單棧溢位利用 2.gs保護繞過利用。包含 攻擊seh繞過gs 攻擊虛函式表繞過gs 3.aslr保護繞過利用。包含 部分覆蓋繞過aslr heap spy 繞過aslr。4.dep保護繞過。r...