본문 바로가기

system/writeup

2014 31c3 mynx

mynx

2014 31c3 mynx

asciiart 구조체와 comment 구조체의 모양은 위와 같다. (data 부분은 array임. 편의상 db로 만듦)

 

간단하게 프로그램 분석을 해보면

첫 번째 hex값이 0x49라면 asciiart

0x37이라면 comment로 판단한다.

numindex의 역할을 하며

총 세 가지의 filterfilter_ptr에 저장된다.

art_data, comment_data는 우리가 입력한 문자열이 들어가는 곳이다.

 

filter_ptr을 3번 메뉴 add_filter에서 실행시켜주므로 filter_ptr을 조작하면 풀리는 문제같다.

 

asciiart data를 입력받는 구간이다.

256바이트를 잘 맞춰서 입력받고 있다.

 

근데 comment data를 입력받는 곳을 보면 1바이트 오버플로우가 난다.

즉, 다음 구조체의 hex 값을 바꿀 수 있어 해당 구조체를 asciiartcomment로 속이거나 할당되지 않은 것 처럼 보이게 할 수 있다. (hex & 1이면 존재하는 것으로 판단하기 때문)

 

이를 이용하여 없어진 asciiart가 존재하는 것 처럼 속이고 filter_ptr을 조작할 수 있다.

 

printfformat string leak을 한 후 system("/bin/sh")를 실행시키면 된다.

 


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

2015 rctf welpwn  (0) 2019.02.06
2016 belluminar remuheap  (0) 2019.02.06
nullcon hackim 2019 easy-shell  (0) 2019.02.03
nullcon hackim 2019 tudutudututu  (0) 2019.02.03
nullcon hackim 2019 babypwn  (0) 2019.02.03