20145216《網路對抗》逆向及BOF基礎實踐

2022-07-17 17:18:15 字數 1437 閱讀 4105

本次實踐的物件是乙個名為pwn1的linux可執行檔案。

該程式正常執行流程是:main呼叫foo函式,foo函式會簡單回顯任何使用者輸入的字串。

該程式同時包含另乙個**片段,getshell,會返回乙個可用shell。正常情況下這個**是不會被執行的。我們實踐的目標就是想辦法執行這個**片段。

我們將學習兩種方法:

1 利用foo函式的bof漏洞,構造乙個攻擊輸入字串,覆蓋返回位址,觸發getshell函式。

2 手工修改可執行檔案,改變程式執行流程,直接跳轉到getshell函式。

1 objdump命令反彙編目標檔案

2 bp:基址暫存器(stack pointer),一般在函式中用來儲存進入函式時的sp的棧頂基址,sp用以指示棧頂的偏移位址,而bp可 作為堆疊區中的乙個基位址

3 eip是存放當前**段的偏移位址

如果輸入字串1111111122222222333333334444444412345678,那1234那四個數最終會覆蓋到堆疊上的返回位址,進而cpu會嘗試執行這個位置的**。那只要把這四個字元替換為   getshell 的記憶體位址,輸給pwn1,pwn1就會執行getshell。

關於perl:

perl是一門解釋型語言,不需要預編譯,可以在命令列上直接使用。

使用輸出重定向「>」將perl生成的字串儲存到檔案input中。

20145213《網路對抗》逆向及Bof基礎

1.利用foo函式的bof漏洞,構造乙個攻擊輸入字串,覆蓋返回位址,觸發getshell函式。2.手工修改可執行檔案,改變程式執行流程,直接跳轉到getshell函式。1.輸入指令objdump d 20145221 more 2.輸入指令vi 20145221,用vim編輯器檢視可執行檔案2014...

20145221《網路對抗》PC平台逆向破解

利用foo函式的bof漏洞,構造乙個攻擊輸入字串,覆蓋返回位址,觸發getshell函式。手工修改可執行檔案,改變程式執行流程,直接跳轉到getshell函式。其實我們還可以做的更多,比如說注入乙個自己製作的shellcode並執行這段shellcode。根據上圖易知,程式通過main函式入口開始執...

20145329 《網路對抗技術》PC平台逆向破解

實踐是在非常簡單的乙個預設條件下完成的 1 關閉堆疊保護 2 關閉堆疊執行保護 3 關閉位址隨機化 4 在x32環境下 5 在linux實踐環境 shellcode概念 shellcode是一段用來獲取互動式shell的機器指令 x4 x3 x2 x1為大致估計的資料溢位並將覆蓋到堆疊上的返回位址的...