20145307陳俊達《網路對抗》逆向及Bof基礎

2022-05-23 07:39:13 字數 1654 閱讀 4643

20145307陳俊達《網路對抗》逆向及bof基礎

實踐目標

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

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

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

本次實踐主要是學習兩種方法:

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

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

現實情況中的攻擊目標:

執行原本不可訪問的**片段

強行修改程式執行流

以及注入執行任意**。

實踐過程

直接修改程式機器指令,改變程式執行流程

在正式開始實踐之前,先對pwn1檔案做個備份,以便修改後可以及時恢復到初始狀態:

使用指令objdump -d 20145215 | more對目標檔案進行反彙編,檢視三個核心函式的反彙編結果:

程式正常執行時是不會執行getshell函式的,而我們的目的就是想讓程式呼叫getshell,因此就要想辦法讓call指令跳轉到getshell的起始位址執行,只要修改「d7ffffff」為"getshell-80484ba"對應的補碼就行。用windows計算器,直接47d-4ba就能得到補碼,是c3ffffff。

接下來就對可執行檔案進行修改

執行下改後的**,得到了shell提示符:

通過構造輸入引數,造成bof攻擊,改變程式執行流

通過對foo函式進行分析,可以發現系統只預留了一定位元組的緩衝區,超出部分會造成溢位,因此這個函式存在bof漏洞,而我們的目標就是覆蓋它的返回位址。

進過嘗試發現,當輸入達到28位元組時產生溢位segmentation fault:

**eip的值,是ascii 1234,也就是說我們輸入的「1234」覆蓋了它的位址,所以我們只需要將getshell的記憶體位址替換這4個字元,就可以達到程式向getshell函式轉移的目的。

我們要構造一串特殊的輸入,由於getshell的記憶體位址是0x0804847d,而其對應的ascii沒有字元,所以我們通過乙個簡單的perl指令碼語言來構造輸入值,輸入:perl -e 'print "12345678123456781234567812345678\x7d\x84\x04\x08\x0a"' > input,使用16進製制檢視指令xxd檢視input檔案的內容是否如預期:

然後將input的輸入,通過管道符「|」,作為可執行檔案20145215的輸入:

陳碩《網路程式設計實戰》01 網路程式設計概要

站在巨人的肩膀之上。unix網路程式設計 是理查德.斯蒂文斯的傳世之作,本課程認為你已經大致讀過本書,具備基本的tcp ip知識,例如ip位址埠號等等,而且用sockets api 寫過echo sever 這樣簡單的網路程式,這是這門課程的前提條件。本課程針對的是 linux 系統,使用 c py...

新浪網中的一角 關於陳氏的言論

很欣賞這位老兄,中國人素質偏下是乙個根本性的原因 一群卑鄙的槍手還在叫囂 我說的骯髒不是這收購本身 而是盛大的發家史,多少億多少億都是孩子們 的零花錢,與他們父母口袋裡的血汗錢 孩子沒分辨能力,沉迷網遊不全是孩子的錯 你盛大悄悄賺這髒錢也就算了 為他在這裡賣命發貼的槍手們 將來你們的孩子若是沉迷在他...

雲當網CEO陳首濤用貨物跟蹤闖出物流網際網路新天地

盛夏的季節,沉悶且乾熱,廈門的午後,也不例外。穿過大廈 6 樓的走廊,陳總已在公司門外迎接。初見雲當網ceo陳首濤的人應該不會想www.cppcns.com到,在他理工男的外表下,卻深藏著一顆嚮往 詩和遠方 的內心。自從他高中時聽到 水手 歌曲的那一刻,他就立志dmssv能成為一名可以遠航世界的水手...