上面兩張圖是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...