본문 바로가기

system/writeup

2019 codegate god-the-reum

god-the-reum

2019 codegate god-the-reum

모든 보호기법이 걸려있다. 이번 코게 문제는 PIE가 상당히 많이 걸려있었다.

 

바이너리를 살짝 실행시켜보면 힙관련 문제임을 느낄 수 있는데 2.27 glibc를 제공해주기까지 헀으니 tcache 관련 문제임을 알 수 있다.

 

1eth를 가진 첫 번째 wallet을 할당했을 때의 모습이다. 두 개의 heap을 할당하는데 첫 번째 heap은 wallet의 address, 두 번째 heap은 wallet의 eth 정보를 가진다.

 

위 두 heap은 main의 wallet 지역변수에서 관리된다.

 

withdraw 했을 때 총 가격이 0원이라면 free해주는데 double free에 관한 검사가 전혀 존재하지 않는다. -> tcache dup

 

show 함수에서 fd(balance) 부분을 출력해 주므로 free후 heap, libc leak이 가능하다.

 

develop 함수로 fd 부분을 임의 변경할 수 있다.

 

위 정보들을 바탕으로 짠 exploit은 다음과 같다.

  1. unsortedbin(>=0x400)을 해제한 후 libc leak
  2. tcache dup 후 __free_hook으로 fd 변경
  3. __free_hook을 oneshot으로 변경 후 trigger

 


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

2017 rctf rnote  (0) 2019.01.28
2019 insomnihack onewrite  (0) 2019.01.27
2018 codegate zoo  (0) 2019.01.25
2018 codegate super marimo  (0) 2019.01.24
2018 codegate superftp  (0) 2019.01.23