本次實踐的物件是乙個名為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為大致估計的資料溢位並將覆蓋到堆疊上的返回位址的...