oj 中level3 (普通棧溢出32位)

  1. 查看文件信息,安全機制
  2. 代碼審計
  3. 分析漏洞點
  4. 編寫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
    在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章