- 查看文件信息,安全機制
- 代碼審計
- 分析漏洞點
- 編寫EXP
一道題出來,先看一下保護機制,
由於你道題是nx是保護的,
拉進入ida看一下,明顯這道題是棧的溢出
這道題們沒有system 函數,和binsh 其實這道題沒有這些,我們可以在泄露函數got表函數的真正加載地址,通過偏移找出函數的庫,從而通過找其他函數的真正加載地址,找到system 函數和 binsh字符串·,
開了nx保護
所以這是堆棧不可以執行
漏洞分析
1,利用下面的圖的write函數去泄露libc_base,並計算system的·函數2,pop_pop_pop去使system利用binsh 的傳入
3,由於開了nx 保護,pop_pop_pop_ret 不能使我們傳進棧中,這隻能用程序本身自己帶的,用到
ROPgadget --binary level3 --only “pop|ret”
-binary是搜索的目錄,-only是搜索的內容,還可以加上|grep 來過濾0x08048519 pop esi pop dei pop ebp ,ret
獲得libc ,我們需要write函數的運行地址(放在write_addr) 這就要先得到write_addr的地址
等會構造的返回地址是main_addr,這是函數的其實位置,
要利用write函數輸出的內容是addrress
最後利用read函數把binsh寫入bss段
查看bss段write [1,buf,8]
這裏的buf指的是 = libc.plt["write]
libc.symbls[“system”]
腳本:
exp.py
oj 中level3 (普通棧溢出32位)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.