본문 바로가기
워게임/드림핵

basic_exploitation_001 문제 풀이

by suyeon27 2022. 12. 16.

문제

 

 

코드 분석

 

[22] read_flag() 함수를 통해 플래그를 얻을 수 있다.

[28] buf의 크기 = 128byte

[32] 취약한 *gets 함수 사용

*gets : 주어진 공간의 길이와 상관없이 사용자가 입력한 만큼의 값이 메모리에 들어간다.

(버퍼 크기보다 더 많이 입력 가능)

 

 

문제 풀이

1. read_flag()

- info func 명령어로 함수(read_flag())의 주소값을 알아낸다.

read_flag()의 주소값 : 0x080485b9

 

 

2. 프로그램의 취약점인 *버퍼 오버플로우를 이용하여  ret로 함수(read_flag())를 실행

*버퍼 오버플로우 : 할당된 메모리 공간을 초과하게 만들어서 악성코드를 실행하거나 비정상적으로 종료하게 만든다.

- 메모리 구조 : buf(128) | sfp(4) | ret(4)

- buf(128) + sfp(4) 부분에 문자열을 채워주고, ret에 함수 주소(0x080485b9)를 넣어 실행시키면 플래그가 나온다.

 

 

실행 결과

'워게임 > 드림핵' 카테고리의 다른 글

64se64 문제 풀이  (0) 2024.01.07
Exercise: SSH 문제 풀이  (0) 2023.12.22
Exercise: Docker 문제 풀이  (0) 2023.11.09
Return Address Overwrite 문제 풀이  (0) 2022.12.30
welcome 문제 풀이  (0) 2022.12.09

댓글