본문 바로가기

system/writeup

2018 codegate super marimo

super marimo

2018 codegate super marimo

처음 init_marimo 부분에서는 0x20 크기로 malloc, 0x20만큼 입력받는다. 잘 작성되어 있다.

 

근데 profile을 수정하는 부분에서는 32보다 많이 받는다. 즉 heap overflow가 발생한다.

 

view에서 정보들을 출력해주기 때문에 leak이 가능하며 위에 프로필 재입력 부분에서 *(a1+2)를 참조하여 입력하므로 arbitrary write가 가능하다.

 

exploit을 짜면서 잘 보면 got를 system으로 바꿔 쉘을 실행시킬만한 함수가 보이질 않는다. ( 다풀고 풀이 보니 strncmp가 있네요 왜 못봤지 ㅠㅠ )

처음에는 exit got를 one gadget으로 덮어 풀려고 했는데 안돼서 stack 주소를 leak한 후 view의 ret을 덮어 rtl로 풀었다.

 

그리고 setvbuf가 설정되어있지 않아 exploit에 정말 짜증을 느꼈다..

 


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

2019 codegate god-the-reum  (0) 2019.01.27
2018 codegate zoo  (0) 2019.01.25
2018 codegate superftp  (0) 2019.01.23
2018 codegate baskinrobins31  (0) 2019.01.22
2016 hitcon sleepyholder  (0) 2019.01.22