8月7日pwn學習

2022-09-18 22:24:25 字數 1849 閱讀 3663

題目描述:pwn!,segment fault!菜雞陷入了沉思

解題思路:老規矩按步驟辦事

沒有stack保護,也沒有記憶體位址隨機機制

main偽**

發現如果dword——60106c這個值為1853186401這個值,便可以得到flag

記憶體位址棧

發現unk_601068這個值可以溢位到doword上。

題目描述:菜雞請教大神如何獲得flag,大神告訴他『使用`面向返回的程式設計`(rop)就可以了』

題目分析:在ida的時候遇到了麻煩,因為32位版本的ida又沒有編譯器,所以只得重找資源,下好了再按常規步驟進行。除此之外還需要對函式棧進行乙個學習。

學習部落格為:

當程序被載入到記憶體時,會被分成很多段。

暫存器也是很重要的乙個組成部分

eax:累加(accumlator)暫存器,常用於函式返回值

ebx:基址(base)暫存器,以它為基址訪問記憶體

ecx:計數器(counter)暫存器,常用作字元和迴圈操作中的j計數器

edx:資料(date)暫存器,常用於乘除法和i/o指標

exi:源變址暫存器

dsi:目的變址暫存器

esp:堆疊(stack)指標暫存器,指向堆疊頂部

ebp:基址指標暫存器,指向當前堆疊底部

沒有棧保護們也沒有位址隨機機制

發現主函式的這個函式中,緩衝區0x88,但是可以讀入0x100,明顯的緩衝區溢位,那麼這個時候我們就在溢位區中想辦法構造乙個高等級的函式

而在右邊恰好有乙個system的plt位址,然後我們在嘗試找一下是否有/bin/sh這個引數,來構造shell,輸入alt+t查詢字串,發現是存在的

那麼在實現exp的有個重點,那就是payload的構造,除了需要0x88長度的字元覆蓋分配的緩衝區,還需要0x04的長度覆蓋在呼叫另乙個函式時儲存的呼叫函式的基址指標ebp

這個時候,後面就可以跟上我們想要呼叫的函式的函式位址,即system,而在建構函式棧時,函式結構為呼叫函式位址-》函式返回位址-》引數1-》引數2-》...-》引數n

所以後面還需要覆蓋函式返回位址後再遞入引數。

所以payload=『a』*(0x88+0x04)+p32(sysadd)+p32(0)+p32(binshadd)

exp

8月14日pwn學習

題目描述 菜雞面對著printf發愁,他不知道printf除了輸出還有什麼作用。題目分析 照著題目描述來看,應該是格式化字串的漏洞。老規矩,照著步驟走 由上面的我們用32位的idapro開啟。可以看到結構也十分簡單,pwnme等於8的時候,就可以得到flag 這裡也一樣要搞清楚在資料棧中偏移了多少。...

8月9日pwn學習

要看乙個乙個程式依賴的so檔案可以用ldd命令,ldd命令後面必須跟上這個程式的絕對命令,一般先用which找到這個程式的絕對路徑 然後再用ldd命令檢視。ldd結果分為三列 第一列 程式依賴庫的名字 第二列 系統提供庫的名字 而在pwn中可以多次用ldd命令檢視,來判斷該程式是否提供了aslr保護...

8月7日學習內容

關於web.config的認識 利用urlrewriter重寫url 2.新增引用 3.設定web.config配置檔案 即把 1的值給括號的地方 4.新建兩個頁面 default.aspx,urlrewtite.aspx default.aspx介面 public partial class de...