본문 바로가기

system/writeup

2016 bctf memo

memo

2016 bctf memo

realloc을 0x80 ~ 0x400 범위로 해줄 수 있다. -> largebin 딱걸치네.. ㅎㅎ

 

name 입력 부분에서 off by one 취약점 발생 -> next chunk size 수정 가능

 

흠.. 여기서 free가 없어서 생각에 잠겼는데 삽질좀 해보니 realloc함수 안에 _int_free가 들어 있어서 이걸로 bin control이 가능하더라.

 

large chunk를 할당할 때 fastbin에 chunk가 존재하면 fastbin의 chunk가 smallbin으로 이동하는데 이때 inuse bit가 존재하지 않으면 unlink가 일어난 후 consolidate를 해 smallbin으로 이동한다.

 

glibc 2.26 malloc.c #3687 ~ #3692

위 코드가 내가 설명한 malloc_consolidate를 해주는 코드이다.

 

glibc 2.26 malloc #4479 ~ #4484

위 코드가 malloc_consolidate에서 unlink를 해주는 코드이다! 굳굳!

 

나는 그래서 name에서 unsafe unlink를 일으킨 후 ptr로 libc leak, title로 realloc_hook을 system으로 덮어 쉘을 땃다.

 

 

realloc도 처음 써보고 malloc_consolidate도 처음 해봐서 배울게 많았던 문제이다.


'system > writeup' 카테고리의 다른 글

nullcon hackim 2019 babypwn  (0) 2019.02.03
nullcon hackim 2019 hackim shop  (2) 2019.02.03
2014 hitcon sktof  (0) 2019.02.01
pwnable.kr crypto1  (0) 2019.02.01
2017 rctf aircraft  (0) 2019.01.30