PWN 基礎篇 保護函式和溢位例項

2021-10-22 15:47:06 字數 1886 閱讀 1584

二、神奇的小知識

三、例項教學

棧溢位保護是一種緩衝區溢攻擊緩解手段,當函式存在緩衝區溢位攻擊漏洞時,攻擊者可以覆蓋棧上的返回位址來讓shellcode能夠得到執行,當啟動棧保護後,函式開始執行的時候會顯往棧裡插入cookie的資訊,當函式真正返回的時候會驗證cookie資訊是否合法,如何不合法就停止程式執行。攻擊者在覆蓋返回位址的時候往往會將cookie資訊給覆蓋掉,導致棧保護檢查失敗而阻止shellcode的執行。在linux中的cookie資訊成為canary。

nx是不可執行的意思,nx(dep)的原理就是將資料所在記憶體頁標識為不可執行,當程式溢位成功轉入shellcode時,程式會嘗試在資料頁面上執行指令,此時cpu就會丟擲異常,而不是去執行惡意**

一般情況下nx和位址空間分布隨機化(aslr)是會同時工作

記憶體位址隨機化機制,有三種情況

0-表示關閉程序位址空間隨機化

1-表示將mmap的機制,stack和vdso頁面隨機化

2-表示在1的基礎上增加棧(heap)的隨機化

可以防範基於ret21bc方式的針對dep的攻擊。aslr和dep配合使用,可以有效阻止攻擊者在堆疊上執行惡意**

checksec 檔名(要以root許可權執行)

objdump命令是用檢視目標檔案或者可執行的目標檔案的構成的gcc工具

-j hello

僅僅顯示指定名稱為hello的section的資訊

-t 顯示檔案的符號表入口

objdump -t -j .text hello

檢視hello程式的.text段有哪些函式

後續的操作如下:

這裡我們分析一下,首先是sub esp,0x24,然後sub eso,0x4,所以在esp上方有0x28的空間,我們的目的是執行exploit的函式,所以我們就要覆蓋到ret指令。

下面是我們的exp,我是用的是python來寫

首先要匯入pwn包,第二步我們要獲得程序,也就是read程式了,再寫偏移offset,也就是0x28+0x4,

,然後寫payload,我們要覆蓋,這裡我用a來覆蓋,offset次,再加上我們的返回位址,也就是在disass exploit中我們push ebp的位址,p32()是告訴電腦,這是個32位位址如下圖:

然後我們寫payload,使用sendline函式,傳送內容是我們的payload。

最後我們獲取一下執行環境,也就是p.interactive()

寫好exp之後,可能沒有許可權,這個時候要提權,也就是chmod 777 exp.py,然後執行即可,結果如下圖:

出現了$符號,說明我們已經獲得了root許可權了!

希望大家可以有所收穫!!!

java基礎篇(十) 函式重寫和函式過載

1.函式過載 overloding 概念 同名函式具有不同的引數列表。作用 實現單個類內部的多型性,是靜態多型。注意點 1 引數型別 個數 順序至少有乙個不相同。2 不能通過 訪問許可權 返回型別 丟擲的異常進行過載。2.函式重寫 overrideing 概念 在子類中定義某個方法與其父類有相同的名...

QT基礎篇,訊號和槽函式機制

我們都知道,現在qt是桌面軟體開發中經常要用到的軟體,那為什我們要用qt,qt有什麼優勢呢?首先qt是乙個跨平台的c gui應用框架,它包含了多種類庫,可以開發gui程式,也可以開發非gui程式,其強大的功能我就不多bb了,可能有人會問這個和mfc那個好,區別是什麼?我只能說mfc和qt比就是個弟弟...

MySQL 基礎篇 十 儲存過程和函式

儲存過程和函式是事先經過編譯並儲存在資料庫中的一段sql語句的 集合。使用好處 1 簡化應用開發人員的很多任務作 2 減少資料在資料庫和應用伺服器之間的傳輸 3 提高了資料處理的效率 變數 系統變數 全域性變數 會話變數 自定義變數 使用者變數 區域性變數 一 系統變數 說明 變數由系統提供,不是使...