□ 문제 설명을 보면 리눅스에서 '파일 디스크립터'가 무엇인지를 물어보고 있다.
□ 문제 서버에 들어가 fd.c 파일을 열어보면 아래와 같다.
- System("/bin/cat flag"); 를 실행하기 위해선 buf의 값이 "LETMEWIN\n"이여야한다.
- Buf는 read함수로 파일 디스크립터인 fd로 특정 문자열 값을 읽어온다.
- 그런데 fd는 int형 변수로 선언되어 atoi(argv[1]) - 0x1234;로 초기화된다.
- Read 함수로 파일을 정상적으로 읽으려면(= 표준 입력) 파일 디스크립터가 0이 되어야한다.
- 따라서 fd를 0으로 만들기 위해선 argv[]1에 0x1234(=4660)를 넣으면 된다.
□ fd 인자에 4660을 입력하고 LETMEWIN을 입력하면 문제가 풀리게 된다.
'■ Wargame > - Pwnable.kr' 카테고리의 다른 글
[Pwnable.kr] flag - 7 pt ( Write Up ) (0) | 2019.06.10 |
---|---|
[Pwnable.kr] BoF - 5 pt ( Write Up ) (0) | 2019.06.09 |
[Pwnable.kr] collision - 3 pt (Write Up) (0) | 2019.06.09 |