file 디스크립터에 대한 문제인듯 합니다.
문제 계정 홈에는 총 세가지의 파일이 있습니다.
실행 파일 fd, 소스파일 fd.c 그리고 flag 파일이 있습니다.
fd 파일을통해 fd2의 쉘을 획득하여 flag 파일을 읽으면 문제를 해결할 수 있을듯 합니다.
atoi 함수에 관한 설명입니다.
설명
10진 정수 문자열을 정수로 변환합니다.
- 문자열에서 10진 정수 숫자 문자 뒤의 일반 문자는 취소되며, 10진 정수 숫자 문자까지만 숫자로 변환됩니다.
- 10진 정수 숫자 문자 앞의 공백문자는 자동 제거되어 10진 정수 숫자 문자까지만 숫자로 변환됩니다.
- 공백 및 10진 정수 문자가 아닌 문자로 시작하면 0을 반환합니다.
read 함수에 대한 설명입니다.
| ||||||||||||
|
문제에서 fd값이 0이되면 값을 임의로 입력할 수 있습니다.
따라서 int fd = atoi(argv[1]) - 0x1234 에서 fd에 0이 들어가도록 하면 됩니다.
argv[1]에 0x1234의 10진 정수문자열 값인 4660을 인자로 주면 atoi 함수가 정수로 변환 해주니 fd는 0으로 초기화 됩니다.
입력을 기다리고 있습니다.
strcmp 함수가 0이 되도록 하려면 LETMEWIN을 입력합니다.
fd2의 권한으로 flag 파일을 /bin/cat 명령으로 읽었습니다.
'Wargame > pwnable.kr' 카테고리의 다른 글
[pwnable.kr] mistake 1p (0) | 2016.08.19 |
---|---|
[pwnable.kr] uaf 8p (0) | 2016.08.15 |
[pnwable.kr] random 1pt (0) | 2016.07.29 |
[pwnable.kr] passcode 10p (0) | 2016.07.29 |
[pwnable.kr 2번] collision 3pt (0) | 2016.07.27 |