二、神奇的小知識
三、例項教學
棧溢位保護是一種緩衝區溢攻擊緩解手段,當函式存在緩衝區溢位攻擊漏洞時,攻擊者可以覆蓋棧上的返回位址來讓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 提高了資料處理的效率 變數 系統變數 全域性變數 會話變數 自定義變數 使用者變數 區域性變數 一 系統變數 說明 變數由系統提供,不是使...