오늘은 dreamhack에서 제공하는 basic_exploitation_000 문제를 풀어볼 것이다.
위와 같이 워게임 형식으로 문제 파일을 다운로드하면 바이너리 파일과 c 코드를 제공하여 준다.
분석을 하기 위해 먼저, 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 } |
위와 같이 쉘을 얻어 플래그를 알 수 있다!!
'모각코 > [2020_하계] 모각코' 카테고리의 다른 글
모각코 3일차 결과 (2020.07.06) (0) | 2020.08.03 |
---|---|
모각코 3일차 계획 (2020.07.06) (0) | 2020.08.03 |
모각코 2일차 결과 (2020.07.01) (0) | 2020.07.06 |
모각코 2일차 계획 (2020.07.01) (0) | 2020.07.06 |
모각코 1일차 계획 (2020.06.29) (0) | 2020.07.06 |