본문 바로가기
Hacking/DreamHack

[DreamHack] 드림핵 bof

by st-og 2024. 10. 28.

문제 확인

해당 문제는 버퍼 오버 플로우 취약점을 활용하여 flag파일을 읽어오는 문제이다.

 

서비스 분석

 

파일 실행 시 meow?라는 문자와 함께 입력을 받게 된다.

입력값을 입력 시 동일 경로에 저장되어 있는 cat.txt를 실행한 후 종료한다.

소스 코드

문제에서 제공되는 소스코드는 없지만 IDA를 사용하여 디컴파일하였다.

 

main 함수

 

코드 라인 설명
3~4 128크기의 변수와 16크기의 변수를 생성한다.
7 v5변수에 "./cat"이라는 문자열을 대입한다.
8~9 meow?를 화면에 출력한 후 144만큼의 데이터를 입력받아 v4에 저장한다.
10 read_cat이라는 함수를 "./cat"이라는 문자열을 사용하여 동작한다.
11 meow : {입력받은 값}  의 형태로 출력을 하고 프로그램을 종료한다.

 

문제 해결

main 함수에서 문제점은 아래와 같다.

1. v4라는 변수 뒤에 곧바로 v5라는 변수가 생성된다.

2. scanf에서 최대로 받을 수 있는 값은 144이지만 v4의 크기는 128이다.

3. scanf를 통해 사용자의 입력값을 받고 난 후 read_cat함수가 실행된다.

 

위 3가지의 문제점으로 인해 v4의 값에 128 이상의 값을 넣게 되면 버퍼 오버플로우가 발생되어 v5변수의 값을 덮을 수 있게 된다.

v5변수에 flag가 저장되어 있는 경로로 값을 덮게 되면 read_cat함수가 실행될 때 cat.txt가 아닌 flag를 화면에 출력하게 될 것이다.

 

A라는 임의의 값을 128만큼 입력한 뒤 flag가 저장되어 있는 경로를 뒤에 붙여 입력을 하였다.

FLAG

 

'Hacking > DreamHack' 카테고리의 다른 글

[DreamHack] 드림핵 basic_exploit_003  (0) 2024.10.31
[DreamHack] 드림핵 baby-bof  (0) 2024.10.30
[DreamHack] 드림핵 shell_basic  (0) 2024.10.28
[DreamHack] 드림핵 Apache htaccess  (0) 2024.01.20
[DreamHack] 드림핵 out of money  (0) 2024.01.19