【PWN · 栈迁移】[BUUCTF]ciscn_2019_es_2

文章介绍了在栈溢出空间有限的情况下,如何通过栈迁移技术来扩大shellcode的容纳空间。作者分析了一个存在栈溢出漏洞的程序,利用两次read操作,首先泄露ebp(main_ebp)地址,然后修改ebp并设置返回地址为leave;ret指令,从而实现esp的移动,扩展ROP链构造空间。最后,文章提供了exploit代码示例。

第一道栈迁移题目,跌跌撞撞理解了


前言

当前溢出可用空间比较少时(极端情况下仅能覆写ebp和ret),可以通过栈迁移的方式,扩大shellcode的容纳空间,其核心是将esp移动到一段shellocode开头。而esp总是由ebp赋值,所以总是通过两次leave;ret的方式修改esp到固定位置。


一、代码审计

Untitled

Untitled

有两次读入操作。read进的内容超过字符串的长度,存在栈溢出漏洞。然而计算溢出长度,发现只有8字节,即刚好可以覆写ebp和ret。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值