32位,看看函式主體

read函式0x30只能剛好覆寫ebp和ret,所以我們要用到堆疊遷移
堆疊遷移核心思想就是利用leave和ret轉移ebp和esp,leave和ret常用于復原堆疊
leave=mov esp,ebp
pop ebp
ret=pop eip
首先我們泄露ebp的地址

查看堆疊區

偏移地址 0x118-0xe=0x38
esp指向了我們寫入的system,接下來的ret就會使eip指向system函式,
ebp-0x38指向aaaa的地址,aaaa實際就是leave_ret后的ebp指向地址的內容,
可以起到定位的作用,因為接下來我們輸入的leave_ret會使esp等于ebp后面的地址,
而此時ebp后面的地址是system,之后就能getshell了
順便一提,接收printf回傳的ebp前要先recv前面read輸入的內容

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/260314.html
標籤:其他
上一篇:中科大-凸優化 筆記(lec29)-Lagrange對偶(一)
下一篇:北汽eu5車機降級方法
