본문 바로가기

모각코/[2020_하계] 모각코

모각코 1일차 결과 (2020.06.29)

오늘은 dreamhack에서 제공하는 basic_exploitation_000 문제를 풀어볼 것이다.

 

위와 같이 워게임 형식으로 문제 파일을 다운로드하면 바이너리 파일과 c 코드를 제공하여 준다.

 

분석을 하기 위해 먼저, c 코드를 살펴보자.

 

< basic_exploitation_000.c >

위 코드를 살펴보게 되면 buf에 0x80(=128)만큼 할당하여 주고 %p를 이용해 buf의 주소를 출력하여 준 뒤 입력을 받는다. 이 때, scanf로 141만큼 입력을 받게 되어 할당 값 보다 길이를 길게 받는다. 이 점을 이용해 공격을 해보자.

 

공격에 앞서, 해당 바이너리의 기본 정보를 알아보자.

아무런 보호 기법이 적용되지 않은 32bit 파일인 것을 알 수 있다. 그렇다면, 메모리의 형태는 다음과 같다.

R E T (4)
S F P (4)
B U F (128)

 

위와 같이 메모리 형태를 가진다면 페이로드는 아래와 같다.

 { shellcode(?) + dummy(132-len(shellcode)) + buf address }

 

< exploit code >
< get shell >

위와 같이 쉘을 얻어 플래그를 알 수 있다!!