728x90
ssh 로 접속해서 풀어봅시다.
(저는 맥북의 터미널 이용했습니다.)
접속이 되었네용
그럼 이제 ls -al 명령어를 써서 파일을 한번 확인해보겠습니다.
fd.c를 먼저 읽어봅시당
우선 이 코드를 이해하기 위해선 리눅스의 파일디스크립터에 대해서 알아보겠습니다
파일 디스크립터는 파이프, FIFO, 소켓, 터미널, 디바이스, 일반파일 등 종류에 상관없이 모든 열려있는 파일을 참조할때 씁니다.
파일디스크립터 | 목적 | POSIX 이름 | stdio 스트림 |
0 | 표준 입력 | STDIN_FILENO | stdin |
1 | 표준 출력 | STDOUT_FILENO | stdout |
2 | 표준 에러 | STDERR_FILENO | stderr |
[ 출처: https://dev-ahn.tistory.com/96 ]
쉽게 말해서, read(fd, buf, 32)라고 되어있는 부분에 fd=0이어야지 입력을 받을 수 있다는 것!
그리고 atoi() 함수는 문자 스트링을 정수값으로 변환하는 함수입니다.
따라서
int fd = atoi( argv[1] ) - 0x1234;
요 부분에서 fd가 0 이 되어야 하니깐 argv[1] 값으로 0x1234 (정수: 4660) 을 입력하고 LETMEWIN 이라는 문자열을 입력하면 flag 파일이 읽어집니당~~
^__^
728x90