漏洞利用與滲透測試基礎(PWN基礎知識)

2021-09-27 06:39:08 字數 1578 閱讀 5297

上面兩張圖是linux下的。

ollydbg是乙個windows下用來反彙編以及動態除錯的工具,這裡我使用的吾愛破解版的ollydbg。

我們可以看到介面有四大塊,載入可執行檔案後得到以下介面:

左上角:反彙編**

左下角:記憶體空間

右上角:暫存器

右下角:棧

ollydbg比較好用的幾個功能有:

在反彙編視窗右鍵查詢所有引用的字串可以看到**中使用的一些常量

1中步驟有時候找不到想要的字串,這時候可以使用操作:反彙編視窗中右鍵->中文搜尋->智慧型搜尋

f7單步執行,f8也是單步進行,但不進入call或jmp的函式,ctrl+f9快速跳到return

編譯字串漏洞**並生成可執行檔案:

#

include

using namespace std;

intmain()

使用ollydbg後執行,我們會發現執行不了,因為它檢視了乙個未知空間的變數,這裡具體原因可能有很多,像是許可權等等,會引起程式錯誤。

相反,將上述**printf中最後乙個%s換成%x之後,生成可執行檔案,再使用ollydebug執行結果如下:

為什麼會出現一串奇怪的數字呢,我們可以看呼叫printf函式之前的棧如下所示:

函式引數壓棧時是從右到左依次入棧,3,2,1依次入棧,然後是「test」在記憶體中的位址入棧,printf函式呼叫的時候,根據%s %d %d %d %x的順序依次從棧中獲取所需的引數變數,因此在最後乙個%x的時候,直接輸出了3後面的棧中的值。

接下來我們嘗試修改讀取任意記憶體的值

sprintf可以做到這一點,比如以下**:

int

func

(int argc,

char

* ar**)

_set_printf_count_output(1

);// 新增這句使%n可用

然而想試驗成功過並不簡單,因為相應的記憶體位址不一定可寫?先記住這個用法吧,反正我不知道怎麼做了- -

在使用fputs和printf組合讀取任意漏洞

滲透測試(漏洞利用)

1 概念 漏洞利用exploitation獲得系統額控制許可權,我們只考慮獲取管理員許可權。漏洞利用就是執行一次漏洞攻擊的過程,而漏洞攻擊程式是利用漏洞 vulnerability 實施攻擊的一種具體體現。2 利用medusa 獲得遠端服務的許可權 medusa h指定目標主機,u指定使用者名稱 u...

滲透測試之漏洞利用開啟篇

簡單的了解網路中已知的漏洞,對網路和系統的綜合安全控制是不夠的。進行針對性的,全面的漏洞測試是有很多好處的。預設情況下,kioptrix4虛擬機會從我們的dhcp伺服器上自動分配乙個ip位址。如果不具備這個條件的話,也可以啟用virtual box預裝的內建dhcp伺服器。使用vboxmanager...

PHP漏洞利用和滲透基礎入門 2

sql select from users where username username and password password 邏輯 建議閱讀 來自 假如我們想登入username為1的使用者 我們應該怎麼構建的sql語句?如下例子 select from users where usern...