■ Wargame/- Pwnable.kr

[Pwnable.kr] Fd - 1pt (Write up)

개발따 2019. 6. 9. 00:46

□ 문제 설명을 보면 리눅스에서 '파일 디스크립터' 무엇인지를 물어보고 있다.

 

 

 

 문제 서버에 들어가 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 입력하면 문제가 풀리게 된다.