緩衝區溢出實戰教程系列(一):第一個緩衝區溢出小程序

在安全圈裏咱們會常常聽到或用到一些0day漏洞,在印象裏咱們都覺的只有真正的大神才能挖掘到這樣的漏洞,事實也的確如此。不過也不要被嚇到,其實大部分的0day是緩衝區溢出漏洞演化而來,只要咱們瞭解了緩衝區溢出原理,假以時日也能夠本身挖掘出0day漏洞。html

因爲是本系列的開篇,因此不給你們講解過多的原理,今天先讓你們直觀感覺一下什麼是緩衝區溢出,讓各位有一個初步的認識,閒話少敘,讓咱們開始。c++

QQ瀏覽器截圖20190212235703.png

給你們一段c語言編寫的代碼,你們在DEV中編譯執行一下:shell

 

#include <stdio.h>編程

#include <string.h>瀏覽器


char name[] = "kalikingkalikingkaliking" ;sass


int main()安全

{編輯器

char buffer[8];ide

strcpy(buffer, name);工具

printf("%s\n",buffer);

getchar();

return 0;

}

 

 

在win7中會出現如下報錯,如圖所示:

1.png有一點c語言基礎的人就不難看出問題所在,在程序中咱們要把變量name的值拷貝給變量buffer,但咱們分配給變量的空間只有8個字節,而name的長度遠遠大於8個字節。這就致使系統本來分配的空間不足而佔用了原本用於存儲程序返回地址的空間,致使程序沒法正常運行。

今天先不講原理,先講講分析緩衝區溢出必備的幾款軟件:

1.Dev-C ++ 是一個免費的全功能集成開發環境(IDE),分佈在GNU通用公共許可證下,用於 CC ++編程。它是用Delphi編寫的。dev.png

免費下載地址:://sourceforge.net/projects/orwelldevcpp/files/latest/download

2.OllyDbg(以其做者Oleh Yuschuk命名)是一個強調二進制代碼分析的x86調試器。

111-2.png

免費下載地址:http://www.ollydbg.de/odbg201.zip

 

3.IDA (Interactive Disassembler)是反彙編計算機軟件,其生成彙編語言源代碼從機器可執行代碼。它支持多種可執行文件格式爲不一樣的處理器操做系統。它還能夠用做Windows PE,Mac OS X Mach-OLinux ELF可執行文件的調試器

08093505_0f8634b7db.png

免費版下載地址:https://www.hex-rays.com/products/ida/support/download_freeware.shtml

接下來介紹一下三個軟件的基本使用方法:

在這裏只介紹在程序分析過程當中經常使用的方法,其他的詳細使用教程請自行Google

Dev c++的使用方法:

1.新建源代碼文件

因爲咱們編寫的源代碼,只爲了瞭解緩衝區溢出的原理,因此沒必要過於複雜,咱們只須要新建個源代碼文件就能夠了,不必建立項目文件。 
1.png

把咱們上邊的示例代碼拷貝進去,保存與其餘編輯器無異,ctrl+s就ok,我習慣保存成c文件,這個你們隨意。 
2.png

2.編譯運行:

編譯運行就很簡單了,點擊工具欄最上方的運行,接着在下拉菜單中找到編譯和運行,點擊:

4.png

這時候會看到文件夾中多了一個exe文件這就是咱們要用來調試的程序:

5.png

3.調試和查看彙編代碼

這個是比較重要的一步,由於在編寫shellcode的時候會用到,這裏只講用法,如何提取shellcode之後再講。

首先設置斷點,選擇設置斷點的行,能夠再前面行標出單擊也能夠按F4,當行標處出現紅點說明斷點設置成功。

6.png

而後開啓調試模式,咱們點擊下方選項卡里的調試,接着點擊調試按鈕。

7.png

接着點擊查看CPU窗口:8.png

咱們就會看到彙編代碼界面:

9.png

dev c++幾個重要用法已經說完了,還要跟你們說一下如何解決安裝使用過程當中常常會出現zlib2.dll文件丟失的問題。

解決辦法以下:

1.下載zlib1.dll:

http://www.pc6.com/softview/SoftView_81060.html

2.解壓後放到系統目錄中

32位系統:放到C:\Windows\System32\(此處爲系統目錄)

64位系統:放到C:\Windows\SysWOW64\

爲了避免使篇幅過長,其他兩個軟件使用方法我將在下一篇文章中進行講解。

相關文章
相關標籤/搜索