ciscn_2019_es_2的wp

   日期:2021-02-17     浏览:132    评论:0    
核心提示:32位,看看函数主体read函数0x30只能刚好覆盖ebp和ret。所以我们要用到栈迁移栈迁移核心思想就是利用leave和ret转移ebp和esp。leave和ret常用于复原栈leave=mov esp,ebppop ebpret=pop eip首先我们泄露ebp的地址查看栈区偏移地址 0x118-0xe=0x38esp指向了我们写入的system,接下来的ret就会使eip指向system函数。ebp-0x38指向aaaa的地址。aaaa实际就是leave_re

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输入的内容

 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服