스프링노트

한빛미디어 - 정보 보안 개론과 실습 제 8장 연습문제 본문

SOLUTION

한빛미디어 - 정보 보안 개론과 실습 제 8장 연습문제

RAYZIE 2013. 4. 19. 10:36

1. 다음 중 각각의 포맷 스트링에 대한 설명으로 틀린 것은?

① %d: 정수형 10진수 상수(integer)

② %s: 문자 값(char) (정답)

③ %f: 실수형 상수(float)

④ %hn: %n의 반인 2바이트 단위

2. 다음은 test2.c와 이 파일을 컴파일하여 실행한 결과이다. 실행 결과에서 8048440은 무엇을 의미하는가?

메모리에 존재하는 값 

3. 다음과 같이 취약 프로그램을 포맷 스트링으로 공격했을 때 0xbffffd98 주소에 저장되는 값은?

bc fa ab bf or 0xBFABFABC

4. 다음 중 포맷 스트링에 취약한 함수가 아닌 것은?

① printf()

② fprintf()

③ scanf() (정답)

④ sprintf()

5. 포맷 스트링을 설명하시오.

C프로그래밍 언어에서 printf() 함수를 사용할 때 버퍼의 저장된 데이터를 출력하는데 사용하는 ‘%d‘와 같은 문자열을 포맷 스트링이라고 한다.

6. 포맷 스트링 사용 함수의 올바른 사용 예와 잘못된 사용 예를 설명하고, 잘못된 사용 예에서 일어날 수 있는 문제점을 설명하시오.

올바른 사용 예 (printf("%s\n", buffer);)

잘못된 사용 예 (printf(buffer);)

잘못된 사용 예로 사용하면 메모리 주소값이 출력됨

7. 포맷 스트링 공격을 이용해 값을 변조하는 공격의 원리를 설명하시오.

버퍼 오보플로우와 같이 메모리에 셸을 띄워 놓고, ret 값을 변조하여 관리자 권한을 획득한다.

8. 포맷 스트링 공격을 이용해 셸을 실행하는 원리를 설명하시오.

ret 주소를 찾으면 직접 대입하면 시스템이 큰 수를 인식할 수 없어서 %n 방식이 아닌 %hn을 사용하여 나누고 사용하면 됨



시스템 보안 제 8장 연습문제.hwp